super 和 this 的使用

super 和 this 的使用

public class father{
    
    	//父类
    protected String name = "小明";
    public father(){
    
    
        super();//他的父类是Object类
    }
    public father(String name){
    
    
        this.name = name;
    }
    private void hello(){
    
    
    	System.out.println("hello");
    }
}
public class son extends father{
    
    	//子类
    public String name = "李华";
    
    public son(){
    
    
        super();//他的父类是father,默认代码,不写也不会报错
    }
    
    public son(String name){
    
    
        this.name = name;
    }
    
    public void test2(){
    
    
		this.test();
		//super.hello();//会报错,不能使用父类中private的属性或方法
	}
    
    public void test(String name){
    
    
        System.out.print(name);
        System.out.print(this.name);
        System.out.print(super.name);
    }
}
public static void main(String[] args){
    
    
    Son son = new son();
    son.test("海王");
}

输出:

海王

李华

小明

结论:

子类通过继承父类,可以使用父类的相关属性和方法

值得注意的是:

  • 子类不能继承父类private的属性或者方法;
  • 使用super()调用父类的构造方法时,必须在构造方法的第一行
  • super必须出现在子类的方法或构造方法中(注:构造参数中默认隐藏代码super();,当父类只有有参构造方法、没有无参构造方法的时候,子类调用super()的时候要加上参数才不报错,所以父类中写完有参构造后,最好加上无参构造,或者使用@lambok注解);
  • this:没有继承也可以使用,指代本类的属性或方法;
  • super:代表父类对象的应用,只有在继承下才可以使用;
  • super 和 this 不用同时调用构造方法;

总结不对或者不足的地方,欢迎各位大牛指正。

猜你喜欢

转载自blog.csdn.net/weixin_44048668/article/details/108702065