继承

本文详细解析了继承的概念、特点及其实现方式。介绍了继承的语法、成员变量与方法的继承规则、构造器的工作原理以及方法重写与重载的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.继承的特点:
传递性、相对性、单根性(一个子类有且只有一个父类)

2.继承的语法形式:
extends - 表示继承
class 子类 extends 父类 {}

3.子类继承父类,子类就可以拥有父类的属性和方法,并且子类可以拓展除了父类以外自有的属性和方法。

4.继承的特点:
只支持单继承,不支持多重继承

5.成员变量和方法
5-1:子类只能继承父类的所有非自有的成员变量和方法。
可以继承的:public、protected - 修饰的成员
不可以继承的: pritvate - 修饰的成员
5-2:private修饰的私有成员可以通过父类中提供的public 的 get/set方法进行访问和操作private的属性
5-3:对于子类可以继承父类中的成员变量和成员方法,如果子类中出现了和父类同名的成员变量和成员方法时,父类的成员变量会被隐藏,父类的成员方法会被覆盖
需要使用父类的成员变量和方法时,就需要使用super关键字来进行引用、

5-4.当创建一个子类对象时,不仅会为该类的实例变量分配内存,也会为它从父类继承得到的所有实例变量分配内存,即使子类定义了与父类中同名的实例变量。即依然会为父类中定义的、被隐藏的变量分配内存

5-5.如果子类中的实例变量被私有了,父类中的同名实例边浪没有被私有,那么子类对象就没有办法直接调用该变量,但可以通过 - 先将对象变量强制向上转型为父类型,再通过该对象引用变量来访问那个实例变量,就会得到的是 - 父类中的那个实例变量。

6.构造器
6-1:子类不能继承获得父类的构造方法,但是可以通过- super - 关键字来访问父类构造方法。
6-2:在一个构造器中调用另外一个重载构造器时使用 - this -调用完成,在子类构造器中调用父类构造器时使用 - super - 调用来完成。
6-3:super和this的调用都必须在第一句,否则会产生编译错误。
super和this 只能存在一个。
6-4:如果父类有无参构造时,所有构造方法都自动默认都会访问父类总的空参构造方法。(自带super();)
6-5:如果父类没有无参构造器,反而有其他的有参构造方法时,子类继承父类后,子类必须显式的创建构造器,不论子类的构造器是否和父类构造器中参数类型是否一致,都必须在子类的构造器中显式的通过super关键字调用和父类构造器相应参数的构造方法。
6-6:当父类中没有无参构造器时,子类继承父类,子类中的构造器方法类型可以和父类中的构造器不同,但是必须每个构造器都显式的使用super关键字调用父类中的某个有参构造器,也可以使用this调用子类中的某个有参构造器,但这个有参构造器必须通过super访问父类中的有参构造器。

7.super:
7-1:super用于限定改对象调用它从父类继承得到的实例变量或方法。
7-2:super和this相同,都不能出现在静态方法中,因为静态方法属于类的,调用静态方法的可能是个类,而不是对象,而super和this都是限定对象调用。
7-3:super限定:super紧跟一个点 例: super.
7-4:super调用:super紧跟圆括号 例:super(参数)

8.方法重写
8-1:重写:子父类出现一模一样的方法,但返回值类型可以是子父类。
方法重写的应用:
8-2:当子类需要父类的功能,而功能主体子类有自己的特有内容时,可以重写父类中的方法。沿用了父类的功能,又定义了子类特有的内容
8-3:方法重写规则:
方法名、形参列表相同
子类方法返回值类型应比父类方法返回值类型更小或者相等。
子类方法的访问权限应比父类方法访问权限更大或者相等。
8-4:父类中的私有方法不能被重写,该方法对于子类是隐藏的看不见的,因此其子类无法访问,也无法重写
8-5:父类静态方法,子类也必须通过静态方法进行覆盖,即静态只能覆盖静态
8-6:子类重写父类方法时,声明最好是一模一样
8-7:如果子类中定义了一个与父类private方法具有相同的方法名、相同的形参列表、相同的返回值类型的方法,一番不是重写,只是在子类中重新定义了一个新的方法,所以该新方法不会受父类方法的限制。

9.重写和重载
9-1:重载(Overload)可以改变返回值类型,它是方法名相同,参数列表不同,与返回值类型无关。
9-2:方法重写:子类中出现和父类中方法声明一模一样的方法。返回值类型相同(或者是子父类,多态),方法名和参数列表一模一样。主要发生在子类和父类的同名方法之间。
9-3:方法重载:本类中出现方法名相同,参数列表不同的方法,和返回值类型无关,可以改变。主要发生同一类的多个同名方法之间。
9-4:子类对象调用方法时,先找子类本身的方法,再找父类中的方法。

10.需要注意的:
10-1:尽量把父类的所有成员变量都设置成private访问类型,不要让子类直接访问父类的成员变量。
10-2:如果父类中的方法需要被外部类调用,则必须以public修饰,但又不想让子类重写,就可以使用final修饰符。
10-3:如果希望父类的某个方法被子类重写,但不希望被其他类自由访问,则可以使用protected来修饰方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值