public 继承 java_Java的继承

本文介绍了Java中的继承特性,它是面向对象编程的重要概念。通过继承,子类可以复用父类的属性和方法,减少代码重复,提高代码的可维护性。文章以动物类为例,展示了如何创建基类和派生类,并使用extends关键字表示继承关系。同时,解释了为何需要继承,以及Java中单继承和多重继承的区别。最后,通过示例代码演示了如何在实际编程中应用继承,提高了代码的组织结构和效率。
摘要由CSDN通过智能技术生成

面向对象第二大特征:继承

1.什么是继承?

继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。

继承的本质是对某一批类的抽象。

继承是类与类之间的关系。

2.继承关系的两个类:

1)基类:父类

2)派生类:子类

例如生活中的例子:

41aaed30f3ab975dbf2aa5e3789a8d81.png

兔子和羊都属于食草动物,狮子和豹属于食肉动物,食草动物和食肉动物又都属于动物

虽然食草动物和食肉动物都是属于动物,但是两者的属性和行为上有差别,

因此,羊和兔子,狮子和豹 都会继承动物类(父类)的一些属性和方法,但也会具有各自食草动物类、食肉动物类的特性。

3.继承的表示方式

用extends关键字来表示子类继承父类。

例如:父类Person

classPerson{

}

子类Student 继承父类Person,表示方法如下:

class Student extendsPerson{

}

4.为什么需要继承?

假设有两个类,Student和Teacher:

Student属性(姓名,年龄) 方法(说话,学习)

Teacher属性(姓名,年龄) 方法(说话,教书)

Student类代码

public classStudent {privateString name;private intage;public Student(String name, intage) {this.name =name;this.age =age;

}public voidsay(String name){

System.out.println(name+ "说话!");

}public voidstudy(String name){

System.out.println(name+ "学习!");

}

}

Teacher类代码

public classTeacher {privateString name;private intage;public Teacher(String name, intage) {this.name =name;this.age =age;

}public voidsay(String name){

System.out.println(name+ "说话!");

}public voidteach(String name){

System.out.println(name+ "教书!");

}

}

我们看到Student和Teacher类中的姓名、年龄这些属性 和  方法say是重复了,这样每个类代码重复且臃肿,维护性不高,因此我们可以从这2个类再进行抽象,抽象成一个Person类,把公共部分提取出来。

Person类代码

public classPerson {private String name;//把Student、Teacher类的name抽象

private int age;//把Student、Teacher类的age抽象//父类的构造器

public Person(String name, intage) {this.name =name;this.age =age;

}//把Student、Teacher类的方法抽象成父类的方法say()

public voidsay(){

System.out.println(name+ "说话!");

}

}

Student类代码

public class Student extendsPerson {public Student(String name,intage) {super(name, age);//用关键字super调用父类的构造方法

}public voidstudy(String name){

System.out.println(name+ "学习!");

}

}

Teacher类代码

public class Teacher extendsPerson {public Teacher(String name,intage){super(name, age);//用关键字super调用父类的构造方法

}public voidteach(String name){

System.out.println(name+ "教书!");

}

}

我们用一个Test类  来测试代码

public classTest {public static voidmain(String[] args) {

Student student= new Student("小明",23);

Teacher teacher= new Teacher("王老师",39);

student.say();//继承父类Person的方法say()

teacher.say();//继承父类Person的方法say()

student.study("小英");//自身类的方法

teacher.teach("李老师");//自身类的方法

}

}

执行结果

fa7e4471e1d255335b5164757718f43d.png

5.继承说明

Java只有单继承,不支持多继承,但可以有多重继承,即一个子类,只有一个父类,一个父类,可以有多个子类。

ad596398d71354f0aef11afc2c481299.png

6.继承特性

1)在Java中所有的类都默认直接或间接继承Object类,例如我们在idea 开发工具中 ,可以看到

aed06b225e45c6550e87c8f20d2037b7.png

2)继承的子类拥有父类非 private 的属性、方法。

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

4)子类可以用自己的方式实现父类的方法。(方法重写rewrite)

5)在idea中可以用快捷键ctrl+H 打开继承树,通过继承树我们可以看到类之间的层次关系,最高的父类是Object

ffe3757451048677cee3ea34fdedba9b.png

68f724bad5a33d9a9f6bd2ca7369ecb7.png

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值