代码块,继承,this 和 super,方法的重写
1、代码块:使用 “{}” 括起来的代码,称为代码块。
构造代码块:在类中的成员位置,用 “{}” 括起来的代码。
静态代码块:构造代码块+静态修饰符。
局部代码快:局部位置,用于限定变量的生命周期。
1 class Test{ 2 static { 3 System.out.println("静态代码块"); 4 } 5 6 { 7 System.out.println("构造代码块"); 8 } 9 10 public Test(){ 11 System.out.println("局部代码块"); 12 } 13 } 14 15 class Fin{ 16 public static void main(String[] args){ 17 Test t1=new Test(); 18 Test t2=new Test(); 19 } 20 } 21 22 //依次输出:静态代码块,构造代码块,局部代码块,构造代码块,局部代码块
2、继承
继承概述:extends,在已经存在的类的基础上建立新的子类,新的子类可以使用父类功能的同时,还可以定义新的功能。
继承格式:class 子类名 extends 父类名,如:class Cat extends Animal{} 。
继承优点:提高了代码的复用性、维护性,使类与类之间产生了关系,是多态的前提。
继承缺点:提高了耦合性(代码的原则:高内聚【独自完成某件事的能力】,低耦合【类与类的关系】)。
继承特点:只能单继承,不支持多继承,即一个子类只能有一个父类;可以多层继承。
注意事项:父类的私有成员(private)不能被继承;父类的构造函数不能被继承,但可以通过 super 关键字访问。
子类方法中访问成员变量:(1)在子类局部范围寻找;(2)在子类成员范围寻找;(3)在父类成员范围寻找;(4)若都不存在则报错。
子类方法与构造函数:子类的所有构造函数默认访问父类无参构造函数。
1 class Animal{ 2 static { 3 System.out.println("1"); 4 } 5 6 { 7 System.out.println("2"); 8 } 9 10 public Animal(){ 11 System.out.println("3"); 12 } 13 } 14 15 class Cat extends Animal{ 16 static { 17 System.out.println("4"); 18 } 19 20 { 21 System.out.println("5"); 22 } 23 24 public Cat(){ 25 System.out.println("6"); 26 } 27 } 28 29 class Fin{ 30 public static void main(String[] args){ 31 Cat c=new Cat(); 32 } 33 } 34 35 //依次输出:1,4,2,3,5,6
3、this 和 super
this 当前类,如:this.age; , this( 参数 ); 。
super 父类,如:super.age; , super( 参数 ); 。
4、方法的重写
方法的重写:override,子类中与父类一模一样的方法声明,会在子类中覆盖掉父类的方法。
重写与重载(override 与 overload):重写,子类中与父类一模一样的方法声明。
重载,本类中出现的方法名一样,参数列表不同的方法(与返回值无关)。
方法重写的应用:子类既需要父类的功能,又需要添加自己的特有功能的时候,重写父类方法。
1 class Cat extends Animal{ 2 public void play(string toy){ 3 super.play(toy); 4 System.out.println("卖萌"); 5 } 6 }
注意事项:父类的私有成员(private)不能被重写;子类重写父类方法时,访问权限不能比父类低。