A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 窗外的雪儿飞 中级黑马   /  2015-8-30 22:10  /  276 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

class Demo_Animal {
        public static void main(String[] args) {
                Cat c = new Cat("花", 4);
                System.out.println(c.getColor()+"----"+c.getLeg());
                c.eat();

                System.out.println("---------------------------");

                Dog d = new Dog("黑", 4);
                System.out.println(d.getColor()+"----"+d.getLeg());
                d.eat();
        }
}

class Animal {
        private String color;
        private int leg;

        public Animal() {}

        public Animal(String color, int leg) {
                this.color = color;
                this.leg = leg;
        }

        public void setColor(String color) {
                this.color = color;
        }

        public String getColor() {
                return color;
        }

        public void setLeg(int leg) {
                this.leg = leg;
        }

        public int getLeg() {
                return leg;
        }

        public void eat() {
                System.out.println("吃饭");
        }
}

class Cat extends Animal{
        public Cat() {}

        public Cat(String color, int leg) {
                super(color, leg);
        }

        public void eat() {
                System.out.println("猫吃鱼");
        }
}

class Dog extends Animal{
        public Dog() {}

        public Dog(String color, int leg) {
                super(color, leg);
        }

        public void eat() {
                System.out.println("够吃肉");
        }
}

4 个回复

倒序浏览
继承中子父类间的成员关系:
                成员变量:
                        “就近原则”。
                       
                构造方法:
                        this:代表(本类)当前对象的引用。
                        super:代表当前对象父类的引用。(super代表的是父类的内存空间标示)
                                为什么子类的构造方法前默认都有一行super()去调用父类的无参构造?
                                        用于子类对象访问父类数据前,对父类数据进行初始化,并没有创建父类对象。

                        每一个构造方法的第一行代码默认都是:super();  为什么呢?
                                因为子类继承类父类,就有可能来使用父类中的数据,
                                所以在初始化子类的数据前,必须先对父类中的数据进行初始化。

                        所有的类都直接或间接继承自Object类。Object类中只有一个空参构造。

                        父类没有空参构造怎么办?
                                1、super(参数)  来调用父类的带参构造。
                                2、this(参数)   来调用本类的其他构造。
                                注意:super()或者this()语句必须出现在构造方法的第一行。

                        this和super能同时出现在构造方法中吗?

                成员方法:
                        方法重写Override:子父类间,子类中出现和父类完全一样的方法。(返回值的数据类型也必须一样)
                        方法重载Overload:同一个类中,出现方法名相同,参数列表不同的情况。 与返回值的数据类型无关。

                        什么时候使用方法重写?
                                当子类需要继承父类的功能,而功能主体上又有自己的特有功能的时候,就可以考虑使用方法重写。

                        注意事项:
                                1、父类的私有成员方法不能被子类重写。
                                2、重写的时候,子类方法的访问权限必须大于等于父类方法的访问权限。
                                3、静态只能覆盖静态。
回复 使用道具 举报
你这么叼 你爸妈知道吗
回复 使用道具 举报

你这么叼 你爸妈知道吗
回复 使用道具 举报


你这么叼 你爸妈知道吗
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马