一、访问修饰符
1、访问修饰符分四种:public(公共的)、protected(受保护的)、默认的(缺省的)、private(私有的)。
public:该类或非该类均可访问。
protected:该类及其子类的成员可以访问。
默认的:相同数据包的类可以访问。
private:只有该类可以访问。
2、其他修饰符
abstract修饰符
如果一个方法只有方法定义,没有方法的具体实现,那么该方法称为抽象方法,用修饰符abstract定义;拥有抽象方法的类成为抽象类,也用修饰符abstract定义。
抽象类不能直接实例化,抽象类变量只能指向子类对象。
如果一个类继承一个抽象类,那么必须重写抽象类定义的抽象方法,否则编译错误。
抽象方法必须由子类提供具体的实现,所以不能是私有的,抽象方法也不能是静态的,静态方法加载时在对象之前。
二、对象初始化
1、构造方法
格式:public 类名(){} 无参构造
public 类名(形参){} 带参构造
构造方法作用:为对象分配空间;初始化成员变量;返回引用。
用法:用于对对象初始化时对象属性的赋值。(构造方法可以根据情况重载使用)
例题:面的方法哪些重载了构造方法?
public class Test{
public Test(int x){}
}
a、public Test(int y){} 形参一样,不构成重载。
b、public Test(String y){} 方法名相同,形参类型不同,是重载。
c、public void Test(String x){} 构造方法无返回类型,不构成重载。
d、public int Test(int y,String x){} 同上。
e、public Test(int y,String x){} 方法名相同,形参个数不同,是重载。
f、public Test(String x,int y){} 方法名相同,形参个数(与选项e也构成重载,形参顺序不同)不同,是重载。
2、构造方法修饰
private修饰一个类的构造方法时,那么这个类将不能被继承。
protected修饰一个类的构造方法时,表示该类的不同包的子类,可以调用该构造方法产生父类对象。
注:子类重写父类的方法时,要求子类的访问修饰符要大于或等于父类。
3、static静态块和实例化块
static修饰的东西,加载时机都在对象之前。
静态块:static{ }
静态化块只在类加载时执行一次,一般用于一些初始化配置。(而构造方法是每产生一个对象,都会执行一次)
实例化块:{ }
实例化块在每个对象产生时都会执行一次,在super()之后执行。
示例:
1 public class StaticTest { 2 3 public static void main(String[] args) { 4 Y a = new Y(); 5 Y b = new Y(); 6 7 } 8 9 } 10 11 class X { 12 static { 13 System.out.println("X静态块"); 14 } 15 16 public X() { 17 System.out.println("X对象"); 18 } 19 } 20 21 class Y extends X { 22 static { 23 System.out.println("Y静态块"); 24 } 25 26 { 27 // 实例化块,在每个对象产生前都会执行一次,在super()之后执行 28 System.out.println("实例化块"); 29 } 30 31 public Y() { 32 System.out.println("Y对象"); 33 } 34 } 35 36 37 执行结果: 38 X静态块 39 Y静态块 40 X对象 41 实例化块 42 Y对象 43 X对象 44 实例化块 45 Y对象