标签:继承 系统 增加 sys 类构造 关系 构造方法 动物园 子类
• 继承概要
Java继承是面向对象的最显著的一个特征。继承是从已有的类中派生出新的类,新的类能吸收已有类的数据属性和行为,并能扩展新的能力
继承所表达的就是一种对象类之间的相交关系,它使得某类对象可以继承另外一类对象的数据成员和成员方法。若类B继承类A,则属于B的对象便具有类A的全部或部分性质(数据属性)和功能(操作),我们称被继承的类A为基类、父类或超类,而称继承类B为A的派生类或子类。
• 继承的好处:
体现代码的可复用行、扩展性。
• 代码演示:
Dog狗
/**狗*/ blic class Dog { /**名称*/ public String name; /**颜色*/ public String color; /**价格*/ public double price; /**显示信息*/ public void show(){ System.out.println("名称:"+name+",颜色:"+color); } }
Cat猫
/**猫*/ public class Cat { /**名称*/ public String name; /**颜色*/ public String color; /**重量*/ public double weight; /**显示信息*/ public void show(){ System.out.println("名称:"+name+",颜色:"+color); } }
zoo动物园
/**动物园*/ public class Zoo { public static void main(String[] args) { Dog dog=new Dog(); dog.name="吉娃娃狗"; dog.color="绿色"; dog.price=19800.7; dog.show(); Cat cat=new Cat(); cat.name="波斯猫"; cat.color="红色"; cat.weight=18.5; cat.show(); } }
运行结果:
上面的代码实现了基本功能,但有问题,主要是:name,color,show重复,如果系统中的动物类再增加将不停的重复,重复就会带来不便修改,不便维护的问题。
•实现继承
要解决上面的问题可以使用继承,达到代码复用的目的。
Animal动物 :
package com.demo.test3; /*动物*/ public class Animal { public String name; //名称 public String color; //颜色 //显示信息 public void show(){ System.out.println("名称:"+name+",颜色:"+color); } }
Dog狗:
package com.demo.test3; //狗继承动物 public class Dog extends Animal { public double price; //价格 }
Cat猫:
package com.demo.test3;
public class Cat extends Animal {
public double weight; //体重
}
Zoo动物园:
package com.demo.test3; public class Zoo { public static void main(String[] args) { Dog dog = new Dog(); dog.name="吉娃娃"; dog.color="绿色"; dog.price=144.1; dog.show(); Cat cat = new Cat(); cat.name="波斯猫"; cat.color="红色"; cat.weight=10.5; cat.show(); } }
从示例中可见dog并没有定义color属性,但在使用中可以调用,是因为dog继承了父类Animal,父类的非私有成员将被子类继承。如果再定义其它的动物类则无须再反复定义name,color与show方法。
•Java继承的特征
1.传递性
若类C继承类B,类B继承类A(多继承),则类C既有从类B那里继承下来的属性与方法,也有从类A那里继承下来的属性与方法,还可以有自己新定义的属性和方法。继承来的属性和方法尽管是隐式的,但仍是类C的属性和方法。
2.单根性
若类B继承类A,那么建立类B时只需要再描述与基类(类A)不同的少量特征(数据成员和成员方法)即可。这种做法能减小代码和数据的冗余度,大大增加程序的重用性。
3.子类调用父类成员
a.使用super关键字调用父类成员
b.子类默认会先调用父类的无参构造方法,如果父没有则报错,可以手动指定,但必须在第一行
实例:
Animal :
package com.demo.test4; //动物 public class Animal { public String name; //名称 public String color; //颜色 public Animal(){ System.out.println("这是动物类你空构造方法"); } public Animal(String name,String color){ this.name = name; this.color = color; } //显示信息 public void show(){ System.out.println("名称:"+name+",颜色:"+color); } }
Dog :
package com.demo.test4; public class Dog extends Animal { public Dog(String name,String color,double price) { super(name,color); //调用父类构造方法 this.price=price; //调用当前对象的成员 } public double price; //价格 //重写父类方法 public void show(){ super.show(); //子类调用父类方法 System.out.println("价格:"+this.price); } }
Cat: :
package com.demo.test4; //猫 public class Cat extends Animal{ public double weight; }
Zoo :
package com.demo.test4; public class Zoo { public static void main(String[] args) { Dog dog = new Dog("中华田园犬","蓝色",123.56); dog.show(); Cat cat = new Cat(); cat.name = "波斯猫"; cat.color = "红色"; cat.weight = 18.5; cat.show(); } }
标签:继承 系统 增加 sys 类构造 关系 构造方法 动物园 子类
原文地址:https://www.cnblogs.com/sacai/p/11122355.html