Java 继承:父类和子类变量、方法及代码块详解
解析:
-
在子类中,如果与父类中的静态变量或成员变量同名且有'final'修饰,会覆盖父类的同名变量。如果没有'final'修饰,则会在子类中新增一个同名变量,不会覆盖父类的同名变量。
-
在子类中,如果与父类中的静态方法或成员方法同名,不论是否有'@Override'注解,都不会覆盖父类的同名方法,而是在子类中新增一个同名方法。
-
子类的构造方法会先调用父类的构造方法,因此子类的初始化过程中会先输出'parent init父类构造器方法',再输出'child init 子类构造方法'。同时,父类的静态代码块也会先于子类的静态代码块执行。
输出结果:
parent static block1(父类静态代码块1) child static block1子类静态代码块1 parent init父类构造器方法 child init 子类构造方法
public class Parent {
final static Integer field_0 = 0;
final static int field_33 = 66;
final static String field_1 = 'static parent variable(父类静态成员常量 final修饰 String)';
final String field_2 = 'parent variable(父类成员变量,仅有final修饰)';
//无final修饰
static Integer noFinal1 = 99;
static String noFinal2 = 'noFinal static parent';
String noFinal3 = 'noFinal parent 成员变量';
static {
System.out.println('parent static block1(父类静态代码块1)');
}
public static void methodParent1() {
System.out.println('parent static method 1父类静态方法1 子类中无同名实现');
}
public static void methodParent2() {
System.out.println('parent static method 1父类静态方法2 静态方法不能在子类中重写');
}
public void methodParent3() {
System.out.println('parent method 3 父类成员方法3 子类无同名实现');
}
public void methodParent4() {
System.out.println('parent method 4 父类成员方法4 子类有同名实现');
}
public Parent() {
System.out.println('parent init父类构造器方法');
}
}
class Child extends Parent {
final static Integer field_0 = 10;
final static String field_1 = 'static child variable子类静态成员常量有fina修饰 且与父类同名';
final String field_2 = 'child variable子类成员变量,有final修饰,与父类同名';
//无final修饰
static Integer noFinal1 = 900;
static String noFinal2 = 'noFinal static parent 与父类同名';
String noFinal3 = 'noFinal parent 成员变量 与父类同名';
String noFinal4 = 'noFinal parent 成员变量 与父类不同名';
static {
System.out.println('child static block1子类静态代码块1');
}
public static void methodChild1() {
System.out.println('child static method 1 子类静态方法1');
}
@Override
public void methodParent4() {
System.out.println('child method 2 子类成员方法1 对应重写父类成员方法4');
}
public void methodChild2() {
System.out.println('子类自身的成员方法2');
}
public Child() {
System.out.println('child init 子类构造方法');
}
}
原文地址: https://www.cveoy.top/t/topic/m5FL 著作权归作者所有。请勿转载和采集!