类的继承
- 在程序开发中我们往往会定义一些相似的类,但是这样会产生很多的麻烦但继承恰好解决了真个问题。继承的最大好处就是为了实现代码的复用,避免了代码的冗长。
- 在程序中,如果想声明一个类继承另一个类,需要使用extends关键字。
//例子
class 父类{
......
}
class 子类 extends 父类{
......
}
- 一个类继承另外一个类中所有的非私有功能
被继承的类:父类 基类 超类。
继承类:子类 派生类 - java的继承机制:单继承(不允许多重继承) 多层继承
单继承:只有一个父类 父类也可以是其他类的子类父类中的私有成员,子类可以调用父类的非私有方法,但不能调用父类的私有成员。
格式:
class 子类 extends 父类{}
继承的好处:提高代码的复用性,提高代码的可维护性,减少代码的书写
继承时我们如果需要改类中的大部分功能我们才会去继承
继承的缺点:类与类之间耦合度过高,不符合我们开发的原则。 - 在继承中,子类不能直接访问父类的私有成员,子类可以调用父类的非私有方法,但不能调用父类的私有成员。
- 方法的重写/覆盖/重载:
**重写:**在继承关系中,子类重写父类方法,要求,方法名相同,参数列表相同,返回值类型也相同,这种技术叫方法的重写。
***注意:***在重写父类时不能使用比父类访问权限更严格的访问权限。
**重载:**参数类型、个数、顺序至少有一个不相同不能重载只有返回值不同的方法名存在于父类和子类、同类中。
super关键字
在子类重写父类后,子类无法访问父类被重写的方法,为了解决这个问题JAVA提供了super关键字,这样就可以在子类中调用父类的普通属性,方法和构造方法。
super.成员变量
super.成员方法(参数一,参数二....)
super必须出现在第一行第一列,如果不写jvm会自动提供。
| this | super |
|---|---|
| 访问本类中的属性,如果本类中没有该属性,则从父类中寻找 | 直接访问父类中的属性 |
| 访问本类中的方法,如果本类中没有该方法,则从父类中寻找 | 直接访问父类中的方法 |
| – | – |
| 调用本类构造,必须放在构造方法首行 | 调用父类构造,必须放在子类构造方法的首行 |
final关键字
final关键字:修饰符 最终的终止的
final可以用来修饰类,成员方法,成员变量
final修饰类:该类不可被继承
final修饰成员变量:不能更改,只能赋值一次,所有叫常量
fianl修饰成员方法:该方法是最终方法,可继承,不可重写
多态
多态:一种事物多种形态
多态的前提:必须发生继承关系
猫是动物
Animal cat extends Animal
Animal a = new Cat();
多态的向上转型:
子类暂时被提升为父类 只能调用父类的功能
父类可以保护子类
调用看左边 运行看右边
多态的向下转型:把提升上去的声明再转回来
把向上转型的父类声明 再转回来
父类 父类声明 = new 子类();//向上
子类 子类声明 = (子类)父类声明;
抽象类:
abstract 抽象的 修饰符
思路:提供没有方法体的方法,让子类强行重写
abstract:可以修饰类和方法
abstract修饰方法:是抽象方法 没有方法体 抽象方法必须放在抽象类中
abstract修饰类:是抽象类 抽象类中可以有抽象方法
抽象类的特点:
1,被abstract修饰的类 类中可以有抽象方法
2,抽象方法有构造函数,但不能被实例化
3,抽象类可以继承一个抽象类
一个一般类继承抽象类需要重写所有抽象方法
接口:真正解决了耦合度过高的问题
接口的特点:
1. 被interface定义的
2. 接口中只有静态常量和抽象方法
3. 接口没有构造方法
jvm会默认给方法提供 public abstract
4. 接口可以多继承接口
5. 一个类可以继承一个类,再实现多个接口
接口的好处:
1,提高了代码的安全性
2,提高了功能的扩展性
3,规定了规则
4,降低了耦合度
Object类
java提供的这个类是所有类的父类每个类都直接或间接继承Object类,
当定义一个类时,如果没有使用extends关键字那么将继承Object类。
在Object类中常定义一些方法
| Boolean equals() | 判断两对象是否相等 |
|---|---|
| int hashCode() | 返回对象的哈希码值 |
| String toString() | 返回对象的字符串表示形式 |
| finalize() | 调用jvm的垃圾回收器 |
本文介绍了Java中的类继承概念,阐述了其如何通过`extends`实现代码复用,包括单继承、多层继承、重写与覆盖、重载、super关键字的应用,以及抽象类和接口的区分。讨论了多态、final关键字的作用,以及Object类和基础概念如equals(), hashCode(), toString()。

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



