java 继承中的super关键字

继承

继承的本质是堆某一批类的抽象,用使用关键字 extend进行实现;

java中类只有单继承,没有多继承,即一个类可以有多个字类,但只能有一个父类

super的调用:

对属性操作:

//程序入口
public class Application {
     public  static void main(String[] args){
        Student student = new Student();
        student.test("传递的名字");
     }
}

//父类
public class Person {

    protected String name = "父亲名字";  //受保护的属性,无法直接访问
}


//子类
public class Student extends Person {

    private String name = "儿子名字";

    public void test(String name){
        System.out.println(name);
        System.out.println(this.name);
        System.out.println(super.name);//调用父类的属性
    }

}

运行结果:

传递的名字
儿子名字
名字

对方法操作:

//程序入口
public class Application {
     public  static void main(String[] args){
        Student student = new Student();
     }
}

//父类
public class Person {
	public Person() {
        System.out.println("这是父类的无参构造方法");
    }
}


//子类
public class Student extends Person {
    public Student() {
        System.out.println("这是子类的无参构造器");
    }
}

运行结果:

这是父类的无参构造方法
这是子类的无参构造器

总结:

1、super可以调用父类中受保护的属性和方法,但父类的私有方法(private)无法继承;

2、字类会自动继承父类的无参构造器,即隐藏代码为

//子类
public class Student extends Person {
    public Student() {
        super(); //隐藏代码,调用父类的无参构造
        System.out.println("这是子类的无参构造器");
    }
}

super() 会调用父类的无参构造器,注意, 要调用父类的构造器,必须在字类构造器的第一行。

当父类无无参构造时(当有有参构造时,自动没有无参构造,需要手动定义),字类无法继承,也无法定义字类的无参构造,但可以用super调用父类的有参构造。

3、super必须只能出现在字类的方法或者构造器中;

4、super和this不能同时调用构造方法(因为this也必须在字类构造器的第一行);

5、与this的区别(重点)

? a、代表的对象不同:

? this:代表本身调用着这个对象;

? super: 代表父类对象的应用;

? b、前提:

? this: 没用继承也可以使用;

? super: 只能在继承条件 才可以使用;

? c、构造方法:

? this(): 本类的构造;

? super(): 父类的构造;

java 继承中的super关键字

上一篇:HTML5商城开发一 楼层滚动加载数据


下一篇:SpringCloud--服务注册中心--总结