java继承的特征_Java继承——面向对象的特征之一

e620c778fbca0643946c966a7280e4a7.png

一、为什么要继承?

在日常生活中的继承一般是说从父母那里继承某些东西。比如小刚的鼻子像爸爸,眼睛像妈妈。并且小刚又继承了父亲的勇敢、善良。在面向对象的世界中,也存在着继承特性,继承是面向对象程序设计的重要特性之一。继承的最大的优点就是提供了代码的重用性。

我们接下来看一下下面的类图有什么样的问题?

745613fb5cfb2d171f57233db4f19c46.png

通过类图我们发现两个类里有很多相同的属性和方法,代码出现了重复。那么,如何做优化设计呢?我们可以通过继承来实现优化设计。

二、使用继承优化后

2b21d1281add1c4167cd870b22f7ac7f.png

三、如何使用继承?

1. 编写父类

class Pet {

//公共的属性和方法

}

2.编写子类,继承父类

class Dog extends Pet {

//子类特有的属性和方法

}

class Penguin extends Pet {

//子类特有的属性和方法

}

四、子类访问父类成员

1. 访问父类构造方法

super();

super(name);

2.访问父类属性

super.name;

3.访问父类方法

super.print();

五、继承的特性

1. 子类拥有父类非 private 的属性、方法

2. 子类可以拥有自己的属性和方法,即子类可以对父类进行扩展

3. Java中的继承是单继承。即一个子类只有一个父类。但是继承是具有传递性的。例如 A 类继承 B 类,B 类继承 C 类,所以按照关系就是 C 类是 B 类的父类,B 类是 A 类的父类

4. 继承提高了类之间的耦合性

5. 继承可以实现代码的复用

6. 子类可以用自己的方式重写父类的方法

四、代码演示

1. 编写父类:

publicclassPet {

//名字

protectedString name;

//亲密度

protectedintlove;

//健康值

protectedinthealth;

publicPet(String name,int love,int health){

this.name=name;

this.love=love;

this.health=health;

}

publicPet(){

}

publicString getName() {

returnname;

}

publicvoidsetName(String name) {

this.name = name;

}

publicintgetLove() {

returnlove;

}

publicvoidsetLove(int love) {

this.love = love;

}

publicintgetHealth() {

returnhealth;

}

publicvoidsetHealth(int health) {

this.health = health;

}

publicvoidprint(){

System.out.println("我的名字叫:"+this.name+",和主人的亲密度 是:"+this.love+",我的健康值是:"+this.health);

}

}

2. 编写子类Dog类:

publicclassDog extends Pet{

//品种

privateString strain;

publicString getStrain(){

returnthis.strain;

}

publicvoidsetStrain(String strain){

this.strain=strain;

}

publicDog(String name,int love,int health,String strain){

//显示调用父类的带参构造

super(name,love,health);

this.strain=strain;

}

publicDog(){

}

}

3. 编写子类Penguin类:

publicclassPenguin extends Pet{

// 性别

privateString sex;

publicPenguin(String name,int love,int health,String sex){

//显示调用父类的带参构造

super(name,love,health);

this.sex=sex;

}

publicPenguin(){

}

publicString getSex() {

returnsex;

}

publicvoidsetSex(String sex) {

this.sex = sex;

}

}

4. 测试程序

Dog dog=newDog("皮皮",20,90,"拉不拉多犬");

dog.print();

Penguin peng=newPenguin("粒粒",30,92,"Q妹");

peng.print();

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值