自学JAVA-5:修饰符、对象初始化

一、访问修饰符

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对象
静态块与实例块示例