Java super详解

Java继承——super详解

可以与this进行对比

//Person类,父类
public class Person {
    protected String name = "szc";
}


//学生is人,子类,继承父类Person
public class Student extends Person {
    private String name = "Hust";
    public void test(String name){
        System.out.println(name);//此处name为test方法传参的name变量
        System.out.println(this.name);//此处name带this,即当前类student中的name,即Hust
        System.out.println(super.name);//super引出的name,即调用父类Person中的name,即szc
    }
}

public class Application {
    public static void main(String[] args) {
        Student student = new Student();
        student.test("wuhan");
    }
}

//输出结果:
wuhan
Hust
szc

super可协助子类调用父类中的属性

Ctrl + 鼠标左键点击变量,可以直接查看其对应的变量内容

public class Person {
    public void print(){//若此时为private方法,则无法在子类中通过super调用
        System.out.println("szc");
    }
}


public class Student extends Person {
    public void print(){
        System.out.println("Hust");
    }

    public void test1(){
        print();	//此时方法为Student类中的print
        this.print();//此时方法仍为Student类中的print
        super.print();//此时方法通过super,变成了Person类中的print
    }
}


public class Application {
    public static void main(String[] args) {
        student.test1();
    }
}

//输出为:Hust
		 Hust
         szc
         
public class Person {
    public Person(){
        System.out.println("Person无参执行了");
    }
}
    
 
public class Student extends Person {
    public Student(){//此时是无参构造,因此即使不写也会默认隐藏super()
        //隐藏代码:调用了父类的无参构造器
        //即默认隐藏了:super();且该代码应该在子类构造器的第一行
        System.out.println("Student无参执行了");
    }
}

public class Application {
    public static void main(String[] args) {
        Student student = new Student();
    }
}

//输出:Person无参执行了
Student无参执行了
    即:先调用父类无参构造器,后调用子类无参构造器

super的注意点

  1. super()调用父类的构造方法,且必须在子类构造中的第一行出现
  2. super必须且只能出现在子类的方法或构造方法中
  3. super和this不能同时调用构造方法(两个都需要在第一行,因此不可共存)

this:

  1. this代表本身调用者这个对象,而super代表父类对象的引用
  2. this在没有继承时也可以使用,而super只能在继承条件下才能使用
  3. 构造方法的区别:this是本类的构造,而super是父类的构造

若父类为有参构造器,则子类不可再通过无参构造进行super的继承调用,应也使用有参构造器。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值