Java面向对象09——super

Super

 

 main
 ​
 package oop.demon01.demon05;
 ​
 public class Application {
     public static void main(String[] args) {
 ​
        Student student=new Student();(3)
 //       student.test("秦疆");(1)先后
 //       student.test1();(2)
         
 ​
    }
 }
 --------------------------------
 //父类
 package oop.demon01.demon05;
 ​
 // 在Java中,所有的类,都默认直接或者间接继承Object
 //Person 人 : 类
 public class Person /*extends Object*/{
 ​
     public Person() {
         System.out.println("Person无参执行了");
    }
 ​
     protected String name="kuangshen";
 ​
     //私有的东西不能被继承(private)
     public void print(){
         System.out.println("Person");
    }
 ​
 }
 --------------------------------
 //子类
 package oop.demon01.demon05;
 ​
 // 学生 is 人 --- 子类(派生类)
 // 子类继承了父类,就会拥有父类的全部方法!
 public class Student extends Person {
 ​
     public Student() {
         /*
         Person无参执行了
         Student无参执行了
          */
         //隐藏代码:默认调用了父类无参构造 super(); 如果是有参 要把参数写上
         super();//调用父类的构造器,必须在子类的第一行 调用子类也是(this)
         System.out.println("Student无参执行了");
    }
 ​
 ​
 ​
     private String name="qianjiang";
 ​
     public void print(){
         System.out.println("Student");
    }
 ​
     public void test1(){
         print();//Student
         this.print();//Student
         super.print();//Person (子类调用父类)
    }
 ​
     public void test(String name){
         System.out.println(name);//秦疆
         System.out.println(this.name);//qianjiang(this 当前这个类的)
         System.out.println(super.name);//kuangshen
    }
 ​
 }
 ​
 ​

注意点

 super注意点:
      1. super调用父类的构造方法,必须在构造方法的第一个
      2. super 必须只能出现在子类方法或者构造方法中
      3. super 和 this 不能同时调用构造方法
     
 Vs this
    代表的对象不同:
        this: 本身调用者这个对象
        super: 代表父类对象的应用
    前提
        this: 没有继承也可以使用
        super: 只能在继承条件才可以使用
    构造方法
        this(): 本类的构造
        super(): 父类的构造!    
     
     

学习内容源自视频:b站狂神说Java

 

上一篇:JS学习笔记:(一)浏览器页面渲染机制


下一篇:CGLIB与JDK动态代理