Java的super关键字详解

  1. super指代的是父类,和this指代的本类相对应
  • superVS this:
    • 代表的对象不同
      • this:本身调用者这个对象
      • super:代表父类对象的应用
    • 前提:
      • this:没有继承也可以使用
      • super:只能在继承条件下才能使用
    • 构造方法:
      • this():本类的构造
      • super(): 父类的构造
  1. super注意点:

    1. super显式调用父类的构造方法时,必须在构造方法的第一个
    2. super只能出现在子类的方法或者构造方法中!
    3. super和this不能同时调用构造方法,会有冲突

private修饰的方法和属性无法被继承

子类代码存在隐藏默认构造器,即调用父类的构造器。若父类构造器未被很好的定义,则子类无法定义构造器

protected关键字表示可以被子类访问和修改,但是不能被其他类访问和修改,但是也可以通过get和set方法操作

  • 个人理解:

    • 继承之后子类可以使用所有父类的非private关键字修饰的属性和方法。当然子类也可以自己定义自己的属性和方法。当自己的属性和方法与父类重名的时候,可以用this和super来区分
  • 还是来看一下student类的demo

package oop.demo05;

public class Student extends Person {
	//构造器
    public Student(){
        //隐藏代码:调用父类的无参构造
        //super(); 调用父类构造器必须在子类构造器第一行
        System.out.println("Student无参构造执行");
    }
	//子类的私有属性
    private String name = "枸仙";
	//子类的私有方法
    public void print(){
        System.out.println("Student");
    }

    public void test(String name){
        System.out.println(name);
        System.out.println(this.name);
        System.out.println(super.name);
    }

    public void test1(){
        print();
        this.print();
        super.print();
    }
}

  • 再看一下父类Person类的demo
package oop.demo05;
public class Person {
	//父类的无参构造器
    public Person(){
        System.out.println("Person无参构造执行");
    }
    
    //父类的受保护的属性(可以被子类访问)
    protected String name = "gqxr";
	
	//父类的方法
    public void print(){
        System.out.println("Person");
    }
}

  • 来看一下main函数的输出
package oop;
import oop.demo05.Person;
import oop.demo05.Student;

public class Application {
    public static void main(String[] args) {
        Student student1 = new Student();
        student1.test("枸杞仙人");
        student1.test1();
    }
}
//结果:
Person无参构造执行
Student无参构造执行
枸杞仙人
枸仙
gqxr
Student
Student
Person
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值