2022-07-21第八组wly Java面向对象(4)---继承

本文详细介绍了Java面向对象中的继承特性,包括继承的概念、注意事项、成员访问特点以及super和this关键字的区别。同时讲解了方法重写,包括其定义、规则、应用场景和注意事项,并通过课上实例和实际案例(如银行卡、借记卡、信用卡类)加深理解。
摘要由CSDN通过智能技术生成

今日重点:

目录

一、Java面向对象的特点之一:继承

1.继承的实现

(1)概念: 

(3)继承的注意事项

 (4)继承能干什么

 2、继承中成员访问的特点

(1)构造方法访问特点

(2)变量和成员方法的访问特点

(3)super和this关键字的区别

3、方法重写 

(1)定义:

(2) 方法的重写的规则

(3)应用场景

(4)方法重写和方法重载的区别:(面试题)

(5)方法重写的注意事项

二、课上实例

Biology类的代码

Animal类的代码

Person类的代码

Cat类的代码

主类的代码

调用方法重写的代码

三、实际案例

主类Demo

银行卡类Card

借记卡类DebitCard

信用卡类CreditCard

一、Java面向对象的特点之一:继承

类与类之间的关系:
 * 1.属性关系
 * 2.参数关系
 * 3.继承关系

1.继承的实现

(1)概念: 

继承是面向对象三大特性之一,可以使得子类具有父类的属性和方法,还可以在子类中重新定义以及追加属性和方法,继承通过extends实现。在Java中,继承是单继承,一个子类只能有一个直接父类,但是可以有多个间接父类,extends后面只能写一个类。

父类(超类superclass)

子类(基类 subclass)​​​​​​


(2)实现格式

  • 格式:class 子类 extends 父类 { }
  • 举例:class Cat extends Animal { }

(3)继承的注意事项

1.子类不是无限继承父类中的内容,它只能继承父类中非私有(非private修饰)的代码,也不能继承构造方法,也不能继承不同包中,默认修饰的内容。
2.只能继承父类中非私有(非private修饰)的代码:private修饰的内容是私有的,只能在本类中使用。(话糙理不糙:你爸爸的闺女 不是你的闺女 你是无法继承这关系)

3.不能继承构造方法:构造方法是用来初始化对象(对象创建),它是给父类创建对象用的。(话糙理不糙:生你爸爸的人 不能生你)

访问权限修饰符:
 * 1.public
 * 2.protected 受保护的,不同包的子类可以访问
 * 3.default  默认的
 * 4.private

 (4)继承能干什么

 * 1.子类可以继承父类的属性
 * 2.子类·可以继承了父类的方法
 * 3.创建子类对象时(创建对象的过程就是实例化的过程),执行了父类的构造器,父类先被实例化,再去实例化子类。
 * 4.当一个类被实例化时,一定会先实例化它的间接父类,再直接父类,再实例化它自己(先有爷爷再有爸爸再有自己)
 *注意:子类的构造器可以有多个,但是必须和父类的构造器形式上统一。

 2、继承中成员访问的特点

(1)构造方法访问特点

子类会继承父类中的数据,可能还会使用父类的数据。所以,子类初始化之前,一定要先完成父类数据的初始化,原因在于,每一个子类构造方法的第一条语句默认都是:super()
注意:子类中所有的构造方法默认都会访问父类中无参的构造方法,如果父类中只有带参构造方法,我们又需要使用无参构造方法时,一般自己给出无参构造方法

(2)变量和成员方法的访问特点

1.变量

①子类局部范围找
②子类成员范围找
③父类成员范围找
④如果都没有就报错(不考虑父亲的父亲…)

2.成员方法

①子类成员范围找

②父类成员范围找

③如果都没有就报错(不考虑父亲的父亲…)

(3)super和this关键字的区别

1.定义:
this:代表本类对象的引用,代表当前对象的引用,谁来调用我,我就代表谁
super:代表父类存储空间的标识,代表当前对象父类的引用


2.使用区别:
①调用成员变量
this.成员变量 调用本类的成员变量,也可以调用父类的成员变量
super.成员变量 调用父类的成员变量
②调用构造方法
this(…) 调用本类的构造方法
super(…) 调用父类的构造方法
③调用成员方法
this.成员方法 调用本类的成员方法,也可以调用父类的方法
super.成员方法 调用父类的成员方法

 以上参考的文章博客链接为:https://blog.csdn.net/zyl1112/article/details/120830702?utm_source=app&app_version=5.2.1&code=app_1562916241&uLinkId=usr1mkqgl919blen

面试题:this和super的区别?
 *  在子类中当使用super调用父类的构造器时,super(age)必须是第一句话
 *  在当前类中使用this调用本类的构造器时,this(name)必须是第一句话
 *  在构造器中,如果需要使用super或this调用其他(子类或者父类)构造器,只能二选一,而且还必须是第一句话
 *  super指向的父类,不代表任何对象。
 *  this指向的本类,代表当前类的对象,方法的调用者。

3、方法重写 

(1)定义:

子类出现了和父类中一模一样的方法声明(方法名一样,参数列表也必须一样)

①子类可以重写父类的方法
②方法的重写,我们可以利用到父类中方法已经运算过的结果,在结果的基础上进行扩展
③方法的重写,体现的就是继承的核心,就是为了扩展父类的功能。
④开发中,如果要重写,基本就是一模一样,我们只变方法体

⑤重写的方法的返回值可以是被重写方法的返回值的子类。
(2) 方法的重写的规则

---前提,继承与被继承的关系(父类与子类):
①.访问权限:重写的方法的权限不能低于被重写的方法。开发中一般都是等于。
②返回值类型:重写的方法的返回值可以和被重写的方法不同,但是必须是被重写方法的返回值的子类。开发中,一般就是一样。
③.方法名:必须相同
④.参数列表:参数类型,参数个数必须相同。
⑤抛出异常:重写的方法不能抛出比被重写的方法更大的异常
 

(3)应用场景

当子类需要父类的功能,而功能主体子类有自己特有内容时,可以重写父类中的方法,这样,即沿袭了父类的功能,又定义了子类特有的内容

(4)方法重写和方法重载的区别:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值