zoukankan      html  css  js  c++  java
  • 继承之super关键字的使用

    一、super关键字:

    在对象的内部使用,可代表父类对象。

    1.
    访问父类的属性:super.age

    2.
    访问父类的方法:super.eat()

    例:

    package 关键字extends;
    
    public class Dog extends Animal{
        int age=20;
        public void eat(){
            System.out.println("狗具有吃东西的能力!");
        }
        public Dog(){
            System.out.println("子类执行了!");
        }
        public void method(){
            System.out.println(super.age);//访问父类的属性
            super.eat();                  //访问父类的方法
            System.out.println(age);      //访问父类的属性    
            eat();                        //访问子类方法
        }
    }
    

    结果:

    父类执行了!
    子类执行了!
    40
    动物具有吃东西的能力!
    20
    狗具有吃东西的能力!

    二、

    子类的构造过程当中必须调用父类的构造方法

    创建子类对象的时候,会自动执行父类构造方法,并创建父类对象。此时就隐式的使用了super关键子。

    super关键字显示的写出来:

    package 关键字extends;
    
    public class Dog extends Animal{
        int age=20;
        public Dog(){
            super();                  //super关键字   
            System.out.println("子类执行了!");
        }
    }
    主函数中:
            Dog dog=new Dog();//创建子类对象
            //dog.method();
    父类执行了!
    子类执行了!

    super关键字隐识表达:

    public class Dog extends Animal{
        int age=20;
        public Dog(){
            //super();             //这里注释掉super关键字   
            System.out.println("子类执行了!");
        }
    }
    主函数中:
            Dog dog=new Dog();
            //dog.method();

    结果:

    父类执行了!
    子类执行了!

    三、
    如果子类的构造方法当中没有显示调用父类的构造方法,则系统会默认调用
    父类无参的构造方法

    如果要显示的调用构造方法,则super关键字必须放在子类的构造方法的第一行

    这里写图片描述

    四、
    如果子类的构造方法中既没有显示的调用父类的构造方法,
    而父类又没有无参的构造方法,则编译出错

    也就是说父类有有参的构造方法,子类的无参构造函数就会报错!!!

    如何修改:

    1.使用显示调用父类的构造函数并传入参数值;

        public Dog(){
            super(3);     //子类显示调用并传入参数
            System.out.println("子类执行了!");
    
        }

    2.在父类中在添加一个无参的构造方法

        public Animal(){         //无参的构造方法
            System.out.println("父类执行了!");
        }
            public Animal(int age){  //有参的构造方法
            this.age=age;
        }

    五、总结
    子类的构造过程当中必须调用父类的构造方法。

    如果子类的构造方法中没有显示的调用父类的构造方法,则系统默认调用父类无参的构造方法。

    如果显示调用父类的构造方法则必须放在子类构造方法的第一行。

    如果子类的构造方法中既没有显示的调用父类的构造方法,而父类中又没有无参的构造方法,则编译出错!!

  • 相关阅读:
    当上微软MVP了
    关于南京四校联合程序设计大赛
    毕业生的商业软件开发之路初入职场
    开源XDesigner ORM 框架设计
    中国计算机软件行业分析3软件倾销
    中国计算机软件行业分析6软件外包的缺陷
    搜狐首页出现一个硕大的错别字
    中国计算机软件行业分析4外企的商业贿赂
    大家快来玩转盘抽奖游戏(走在网页游戏开发的路上(七))
    走在网页游戏开发的路上(四)
  • 原文地址:https://www.cnblogs.com/tengpengfei/p/10454071.html
Copyright © 2011-2022 走看看