• java 中super的使用


    1,新建Application类,作为程序的入口

    package oop.demo05;
    
    //继承
    public class Application {
        public static void main(String[] args) {
    
            /*
            先执行 父类的无参、在执行了类的无参
            Person 无参执行了
            Student 无参执行了
             */
    
            Student s1 = new Student();
            s1.say(); //说了一句话!!
    //        System.out.println(s1.money);//1000000000 加了私有 修饰后,这个语句报错
    
            System.out.println("s1.getMoney():" + s1.getMoney()); //s1.getMoney():1000000000
    
            Student s2 = new Student();
            s2.Test("向向");
    
            s2.Test2();
        }
    }
    
    

    2,新建Person类

    package oop.demo05;
    /*
    继承
     */
    public class Person {
    //    无参构造
        public Person() {
            System.out.println("Person 无参执行了");
        }
    
        public void  say(){
            System.out.println("说了一句话!!");
        }
    
        public int getMoney() {
            return money;
        }
    
        public void setMoney(int money) {
            this.money = money;
        }
    
        private   int money=10_0000_0000;
    
        /*
        public 公共的
        private 私有的
        default 默认的
        protected 受保护的
         */
    
    
        protected  String name="小小向";
    
        public void  print(){
            System.out.println("Person");
        }
    
        //私有和不能被继承
        private void  print2(){
            System.out.println("Person");
        }
    
    }
    
    

    3,新建Student类

    package oop.demo05;
    
    public class Student extends Person {
        public Student() {
    //        隐藏代码,调用父类的无参构造
            super();
            System.out.println("Student 无参执行了");
        }
    
        private String name="小玉";
    
        public  void Test(String name){
            System.out.println("name:"+name);//向向
            System.out.println("this.name:"+this.name);//小玉
            System.out.println("super.name:"+super.name); // 小小向 ------------调父类;
        }
    
        public  void  print(){
            System.out.println("Student");
        }
    
        public  void  Test2(){
            print();//Student
            this.print();//Student
            super.print();//Person
    
    //        super.print2(); //不能调用,私有的
        }
    
    
    }
    
    

    4,新建Teacher类

    package oop.demo05;
    
    public class Teacher extends  Person{
    }
    
    

    5,super使用

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

    6,运行结果

  • 相关阅读:
    [luogu p1996] 约瑟夫问题
    [luogu p1098] 字符串的展开
    [luogu p1035] 级数求和
    [luogu p1004] 方格取数
    [luogu p3383]【模板】线性筛素数
    [luogu p1223] 排队接水
    [luogu p1002] 过河卒
    [luogu p1001] A+B Problem
    Java BIO/NIO(Non-blocking I/O)详解
    Linux页框&伙伴算法以及slab机制
  • 原文地址:https://www.cnblogs.com/d534/p/15093814.html
Copyright © 2020-2023  润新知