zoukankan      html  css  js  c++  java
  • 揭秘子类构造函数执行过程

    子父类中的构造函数

          在对子类对象进行初始化时,父类的构造函数也会运行,那是因为子类的构造函数底层默认第一行有一条隐式的语句 super();

    seper(); 会访问呢父类空参数的构造函数,而且子类中的所有构造函数默认第一行都是seper();

    为什么子类一定要访问父类中的构造函数?

    1.因为父类中的数据子类可以直接获取,所以子类对象在建立时,需要先查看父类是如何对这些数据进行初始化的。

    2.所以在子类在对象初始化时,要先访问一下父类中的构造函数。

    3.如果要访问父类中指定的构造函数,可以通过手动定义super语句的方式来指定。

    package cn.zhaoqiang.pet;
    /*
     * 宠物类,狗狗和企鹅的父类
     * */
    
    public class Pet{
        private String name = "SeyHello";  //名字
        private int health = 100;  //健康值
        private int love = 10;      //亲密度
        //无参构造方法
        public Pet() {
            this.health=95;
            System.out.println("执行宠物的无参构造方法");
        }
        //有参构造方法
        public Pet(String name) {
            this.name = name;
        }
    
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public int getHealth() {
            return health;
        }
        public void setHealth(int health) {
            this.health = health;
        }
        public int getLove() {
            return love;
        }
        public void setLove(int love) {
            this.love = love;
        }
        //输出宠物信息
        public void print(){
            System.out.println("宠物自白:
    我的名字叫:"+this.name+",我的健康值为:"+this.health+",我和主人的亲密度:"+this.love);
        }
        
    }
    package cn.zhaoqiang.pet;
    /*
     *  宠物类狗狗的子类
     * */
    
    public class Dog extends Pet {
        //品种
        private String strain;
        //有参构造 名字,品种
        public Dog(String name,String strain){
            super(name);//此出不能使用 this.name=name;
            this.strain=strain;
        }
        public String getStrain(){
            return strain;    
        }
    }
    package cn.zhaoqiang.pet;
    
    /*
     * 企鹅类,宠物的子类
     * */
    
    public class Penguin extends Pet{
        private String sex;  //性别
        //有参构造方法
        public Penguin(String name,String sex){
            super(name);//此出不能使用 this.name=name;
            this.sex = sex;
        }
        public String getsex(){
            return sex;
        }
    
    }
    package cn.zhaoqiang.pet;
    /*
     * 测试类的继承;
     * 
     * */
    
    public class Test {
        public static void main(String[] args) {
            //创建宠物对象pp并输出信息
            Pet pp = new Pet();
            pp.print();
            //创建狗狗对象dog并输出信息
            Dog dog =new Dog("藏獒", "哈吉吧");
            dog.print();
            //创建企鹅对象pgn并输出信息
            Penguin pgn = new Penguin("毛奥","Q妹"); 
            pgn.print();
        }
    
    }

  • 相关阅读:
    SDUT 1570 C 旅行(DFS)
    SDUT 1269 走迷宫(BFS)
    求连通分量个数
    Codeforces Round #237 (Div. 2)
    FZU 2150 Fire Game(BFS)
    HDU 2045 不容易系列之(3)—— LELE的RPG难题(递推)
    LeetCode 155. Min Stack
    【ZZ】终于有人把云计算、大数据和人工智能讲明白了!
    学习笔记之Microsoft Office 365
    【ZZ】技能表合集
  • 原文地址:https://www.cnblogs.com/wqtzhaoqiang/p/6742984.html
Copyright © 2011-2022 走看看