package com.org.lxh;

import java.util.Calendar;

/**
* 面向对象编程入门
* @author hemmingway <hemmingway@163.com>
*
*/
public class Chp6 {
int num=500; //成员变量
public static int num2=200; //静态变量
public static final double PI=3.1415926; //静态常量

/**
* 静态方法
*/
public static void printInfo(){
System.out.println("通过静态方法输出的信息");
}

/**
* 静态语句块
*/
static {
System.out.println("initial......");
}

/**
* @param args
*/
//@SuppressWarnings("static-access") //用实例引用static变量,方法时会出现这个警告,错误
public static void main(String[] args) {
// TODO Auto-generated method stub

//1、面向对象的特征有哪些?Java、C++、C#
/*
* 封装:面向对象的编程中,大多数是以类作为数据封装的基本单位。封装可以隐藏实现的细节,使得代码模块化。
*
*
* 继承:任何类都可以从另外一个类继承,就是说,这个类拥有它继承的类的所有成员。
*
*
* 多态:减少代码之间的紧密耦合,增加应用程序的灵活性。
*
*
*/


//2、为什么需要面向对象?
/*
* 在较早的软件开发中(没有出现面向对象思想前),一般会存在以下问题:
*
* 软件重用性差
*
* 软件可维护性差
*
* 开发出来的软件不能满足用户的需求变化
*
*/

//3、什么是面向对象编程?
/*
*
*
*/

//4、什么是类?
/*
* 类是具有相同性质和功能的事物所构成的集合体,是对现实事物的一种抽象描述。
*
*
*/

//4、类和对象的区别是什么?
/*
* 类(Class)是抽象的概念,用于创建对象;
* 对象是类的实例,是客观世界真实存在的实体。
*
*/

//5、抽象类与抽象方法有什么作用?
/*
* Java中声明抽象类时使用abstract关键字,具体方法格式如下:
*
* 权限修饰符 abstract class 类名{
* //类成员
* }
*
* (1)、抽象类不能直接实例化,抽象类不能用new操作符新建对象出来;
* (2)、抽象类中可以包含抽象成员,非抽象类中不可以;
* (3)、如果一个非抽象类从抽象类中派生,则必须通过覆盖来实现所有继承而来的抽象成员。
*
*
* 抽象方法就是在声明方法时,加上abstract关键字。声明抽象方法时需要注意一下3点:
* (1)、抽象方法必须声明在抽象类中;
* (2)、抽象方法不能使用static和private修饰符;
* (3)、抽象方法不提供任何实际实现,需要在非抽象类中重写抽象方法。
*
* 参见抽象类 AudioMedia 的声明
* 抽象类的实现 MP3Music 类
*
*/

//6、访问权限public、protected、private
/*
*
*
*/

//7、构造方法有何作用?
/*
* 通过构造方法可以创建类的对象,也可以创建对象的同时初始化类的数据成员。
*
* 构造方法通常用于创建类的实例(对象),并完成必要的初始化处理。
*
* MP3Music 类演示使用构造方法
*
*/

//8、只能通过构造方法创建对象?
/*
* Java通常通过构造方法构造创建对象。
* 但是也有另外,java.util.Calendar 类不能通过构造方法创建对象
*
* 其他的方法有工厂方法,放射方法创建
*
*/

Calendar cal = Calendar.getInstance(); //创建Calendar对象
System.out.println(cal.getTime()); //Sun Dec 02 16:05:06 CST 2012


//9、什么是方法重载?
/*
* 方法重载是指在一个类或接口中可以有多个相同的名称的方法,这些相同名称的方法具有不同的形参,
* 即形参的个数不同或形参的类型不同。
*
* MP3Music 类中有构造方法的重载
*
*/

//10、static和final的区别
/*
* 静态变量不属于某一个特定的类
*
* 权限修饰符 static 数据类型 变量名;
* private static int num = 100;
*
* 在Java中使用final关键字声明常量,如果在声明常量时,使用static关键字进行修饰,则该常量就是静态常量
*
* 权限修饰符 static final 数据类型 常量名=常量值;
* public static final double PI=3.1415926;
*
*/
Chp6 chp6 = new Chp6();
System.out.println("通过类的实例输出成员变量num和静态成员变量num2的值:");
System.out.println(chp6.num + " " + Chp6.num2); //chp6是实例输出, Chp6类名输出


//11、静态方法
/*
* 不需要通过类的实例进行访问,而是通过类名直接访问。
*
* [权限修饰符] static 数据类型 方法名(){
* 方法体;
* }
*
*/
Chp6.printInfo(); //访问静态方法


//12、静态语句块
/*
* 静态语句块通常用于进行必须的初始化操作
*
* 主方法中不需要写任何代码
*
*/

//13、如何在一个类中访问另外一个类的方法?
/*
*
*
*/


}

}


initial......

Mon Dec 03 16:17:00 CST 2012

通过类的实例输出成员变量num和静态成员变量num2的值:

500 200

通过静态方法输出的信息