extends 的小动作

Demo1:子类实例化对象之前会自动先实例化父类对象,调用了父类无参构造方法

class A{
	public A() {
		System.out.println("A、A类的构造方法");
	}
}
 
class B extends A{
	public B() {
		System.out.println("B、B类的构造方法");
	}
}
 
public class Demo {
	public static void main(String[] args) {
		new B();
	}
}
##################
console:
A、A类的构造方法
B、B类的构造方法
原文链接:https://blog.csdn.net/ikv1989/article/details/80080416

Demo2:如果父类没有无参构造,就必须使用super()明确调用父类有参构造方法

class A{
	public A(String title) {
		System.out.println("A、A类的构造方法");
	}
}
 
class B extends A{
	public B(String title) {
		super(title);
		System.out.println("B、B类的构造方法");
	}
}
 
public class Demo04 {
	public static void main(String[] args) {
		new B("Hello");		
	}
}
##################
console:
A、A类的构造方法
B、B类的构造方法
原文链接:https://blog.csdn.net/ikv1989/article/details/80080416

Demo3:dubug check resource of null

public class A {
    public String s1 = "AAAA";

    public static void main(String[] args) {
        A a = new B();
        System.out.println(a.s1);
    }

    public A(){
        call();
    }

    public void call(){
        System.out.println("A:" + s1);
    }
}

public class B extends A{

    public String s2 = "BBBB";

    public B(){
        call();
    }

    public void call(){
        System.out.println("B:" + s2);
    }
}

##############################
when run class A main method
console:
B:null
B:BBBB
AAAA
posted @ 2022-01-04 10:07  大道至简、  阅读(40)  评论(0)    收藏  举报