【Thinking in Java】六:复用

一 初始化父类

1 父类构造器总是会被调用
2 在子类构造器之前被调用
class Animal{
     Animal(){
        System.println.out("Animal");
     }
}
class Monkey extends Animal{
     Monkey(){
        System.println.out("Monkey");
     }
     public static void main(String[] args){
        Monkey() m = new   Monkey();
     }
}


Output:
Animal
Monkey

如果在子类中不调用父类构造器,编译器会报错,调用父类构造器是在子类构造器中要做的第一件事。

class Animal{
     Animal(int i){
        System.println.out("Animal");
     }
}
class Monkey extends Animal{
     Monkey(){
        super(11);//这句注释掉 编译不通过
        System.println.out("Monkey");
     }
     public static void main(String[] args){
        Monkey() m = new   Monkey();
     }
}


二 final关键字

对于基本类型final使数值永不改变,对于对象引用,使引用恒定不变。
对象本身被final修饰后,可以改变对象的属性。


		final String xx = "111";
		xx = "22";//编译不通过
		final List xx = new ArrayList();
		xx.add("1");
		xx.set(0, "2");
		System.out.println(xx.toString());

Output:2
证明了对象可以改变。

final修饰方法

public class Test1 extends Final{

	public static void main(String[] args) {

	}
	public  void test(){//编译报错
		
	}
}

class Final{

	public final void test(){
		
	}
}

final修饰的方法不能被覆盖。

不过public权限符设置为private时,编译可以通过,这样做也没什么意义。

final修饰类

类不能被继承

猜你喜欢

转载自lovejavah123.iteye.com/blog/2291560