目录
想象一个如下的场景:
人(Person类)中定义了名字,年龄,性别等;
学生(Student类)中除了定义名字,年龄,性别等,还需定义学校,年级,成绩。
- Student类包含了Person类中已有的属性和方法(名字,年龄,性别),只是多了一个或多个属性和方法。为了实现不在Student类中重复再写一遍Person类中代码,我们就可以使用继承。
继承:
Student类(子类)继承Person类(父类),Student类获得了Person类的所有功能。
1. 格式
public class 子类名 extends 父类名{ 方法体 }
public class Student extends Person{ ...... }
- 子类在创建时,默认获得父类所有字段;
- 子类,又称派生类;父类,又称基类,超类
2. Object类
继承关系图:
┌───────────┐
│ Object │ 任何一个类都是Java默认的Object类的子类,比如上面的Person类:
└───────────┘
▲
│
┌───────────┐
│ Person │ 除了Object类,任何一个类只能从另外一个类继承,所以子类的父类只
└───────────┘
有一个,而父类的子类可以有很多;
▲
│
┌───────────┐
│ Student │ 类不能多继承
└───────────┘
3. 在子类中
- 获取了父类所有属性及方法,但私有属性和方法(访问修饰符为private)不能直接使用;
- 子类若挎包(和父类不在一个包中),则不能使用父类中访问修饰符为 缺省 (默认访问修饰符)的属性方法;
(方法)重写
场景:父类中的方法无法适用所有子类,在子类中需要对父类方法进行调整:
比如:Student类中定义一个study方法,其子类PriStudent类和UnStudent类虽然都有study方法,但具体study方法有所不同,需要有针对地调整。
1. 前提条件
a. 有继承关系的两个类之间
b. 返回值类型,方法名,参数类型(个数,顺序)完全一样
c. 识别方法:eclipse左端有绿色小三角
d. 访问修饰符权限一定≥父类
Java中提供4种访问修饰符:public>protected> 缺省>private
2. 保留父类方法
- 在子类方法中调用父类中的方法
- 关键字super:表示当前类的父类对象
super.方法名;
3. 自动转型(向上转型)
a. 格式:
A 对象 = new B ( );
B extends A 或者 B implements A
Person pe = new Student( );
b. 翻译一下:引用类型为A的变量,指向B类型的实例;
c. 调用执行顺序发生变化:依次从父类到子类开始找方法;
只有父类子类都有的方法才能正确执行——即自动转型后,该对象能调用父类方法以及子类中重写的方法
4. 强制向下转型(向下转型)
a. 格式:
Student stu = (Student) pe;
b. 前提:该对象进行了自动转型,才能被向下转型。
5. 继承的优势:多态
参数类型可以是 参数类的对象 或 其子类的对象,因为此时子类的对象被自动转型为父类对象。
实现接口(特殊的继承)
1. 格式
关键字:implements
public class 子类名 implements 接口1,接口2,接口3,,,{ }
实现接口一定要重写接口中所有的抽象方法
本文主要介绍了Java中的继承概念,包括继承的格式、Object类以及子类中的特性。同时,详细阐述了方法重写,包括其前提条件、如何保留父类方法、自动转型和强制向下转型的使用。最后,讲解了实现接口的特殊继承方式及其格式。
1万+

被折叠的 条评论
为什么被折叠?



