java-继承
2020-12-13 04:47
标签:继承 系统 增加 sys 类构造 关系 构造方法 动物园 子类 • 继承概要 Java继承是面向对象的最显著的一个特征。继承是从已有的类中派生出新的类,新的类能吸收已有类的数据属性和行为,并能扩展新的能力 继承所表达的就是一种对象类之间的相交关系,它使得某类对象可以继承另外一类对象的数据成员和成员方法。若类B继承类A,则属于B的对象便具有类A的全部或部分性质(数据属性)和功能(操作),我们称被继承的类A为基类、父类或超类,而称继承类B为A的派生类或子类。 • 继承的好处: 体现代码的可复用行、扩展性。 • 代码演示: Dog狗 Cat猫 zoo动物园 上面的代码实现了基本功能,但有问题,主要是:name,color,show重复,如果系统中的动物类再增加将不停的重复,重复就会带来不便修改,不便维护的问题。 •实现继承 要解决上面的问题可以使用继承,达到代码复用的目的。 Animal动物 : Dog狗: Cat猫: package com.demo.test3; public class Cat extends Animal { Zoo动物园: 从示例中可见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 : Dog : Cat: : Zoo : java-继承 标签:继承 系统 增加 sys 类构造 关系 构造方法 动物园 子类 原文地址:https://www.cnblogs.com/sacai/p/11122355.html继承
/**狗*/
blic class Dog {
/**名称*/
public String name;
/**颜色*/
public String color;
/**价格*/
public double price;
/**显示信息*/
public void show(){
System.out.println("名称:"+name+",颜色:"+color);
}
}
/**猫*/
public class Cat {
/**名称*/
public String name;
/**颜色*/
public String color;
/**重量*/
public double weight;
/**显示信息*/
public void show(){
System.out.println("名称:"+name+",颜色:"+color);
}
}
/**动物园*/
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();
}
}
运行结果:
package com.demo.test3;
/*动物*/
public class Animal {
public String name; //名称
public String color; //颜色
//显示信息
public void show(){
System.out.println("名称:"+name+",颜色:"+color);
}
}
package com.demo.test3;
//狗继承动物
public class Dog extends Animal {
public double price; //价格
}
public double weight; //体重
}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();
}
}
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);
}
}
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);
}
}
package com.demo.test4;
//猫
public class Cat extends Animal{
public double weight;
}
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();
}
}