20220721 第五小组 罗大禹 学习笔记
20220721 第五小组 罗大禹 学习笔记
Java 面向对象继承
学习重点
1.方法的重写
2.包装器
学习心得
今天的学习内容努力努力还是可以跟的上的,但是老师下午讲的例子就有点跟不上了,这部分知识的还是不怎么熟悉,需要多加练习
学习内容
Java 面向对象继承
面向对象 继承
类与类之间的关系:(理解)
-
属性关系(has)
-
参数关系(use)
-
继承关系(is)
举例说明
/*
建立四个类:Biology类 Animal类 Person类 Cat类
生物Biology 间接继承(人是生物 猫是生物)
动物Animal 直接继承(人是动物 猫是动物)
人Person 猫Cat
基类(子类)subcalss
Person、Cat、Animal可以叫做Biology类的子类
Animal叫做Biology的直接子类
Person和Cat叫做Biology类的间接子类,Person和Cat是Animal的直接子类
超类(父类)superclass
Person和Cat的直接父类是Animal(写在extends关键字后面的类)
Person和Cat的间接父类Biology
*/
extends:继承(理解)
在Java中的继承是单继承:一个子类,只能有一个直接父类,但是可以有多个间接父类
extends后面只能有一个类(目前是对的,随着学习会被推翻,现在这么理解)
举例说明
public class Cat extends Animal{
//Cat的直接父类为Animal
}
继承能干什么?(理解)
继承父类的属性及方法
-
创建子类对象时,父类先被实例化,再去实例化子类( 当一个类被实例化时,一定会先实例化它的直接和间接父类)
-
子类的构造器可以有多个,但是必须和父类的构造器形式上统一(若父类没有无参构造器,子类也不能有)
访问权限修饰符
public
protected 受保护的,不同包的子类可以访问
默认的
private
super关键字:
代表调用父类的结构(属性、方法、构造器)
this和super的区别?
-
在子类中当使用super调用父类的构造器时,super(age)必须是第一句话
在当前类中使用this调用本类的构造器时,this(name)必须是第一句话
-
在构造器中,如果需要使用super或this调用其他构造器,只能二选一,而且必须放在第一句话
-
super指向的父类,不代表任何对象。
this指向的本类,代表当前类的对象,方法的调用者。
方法的重写(覆写,覆盖 override)(理解)
1.方法的重写
-
子类可以重写父类的方法
-
方法的重写可以利用到父类中方法已经运算过的结果,在结果的基础上进行扩展
-
方法的重写,体现的就是继承的核心,就是为了扩展父类的功能。
2.方法的重写的规则:前提,继承与被继承的关系
- 访问权限:重写的方法的权限不能低于被重写的方法。开发中一般都是等于(若父类方法的权限为protected,重写的方法权限至少为protected)
- 返回值类型:重写的方法的返回值可以和被重写的方法不同,但是必须是被重写方法的返回值的子类。开发中,一般就是一样。
/*父类中*/public Animal eat(){}
/*子类中*/public Cat eat(){}
//返回值类型不同,但Cat是Animal的子类,因此eat被重写了
/*父类中*/public double eat(){}
/*子类中*/public int eat(){}
//返回值类型不同,而且int不是double的子类,因此不是重写
-
方法名:必须相同
-
参数列表:参数类型,参数个数必须相同。
-
抛出异常:重写的方法不能抛出比被重写的方法更大的异常(目前未讲)
开发中,如果要重写,基本就是一模一样,我们只变方法体
举例说明
Animal类
public class Animal extends Biology{
public void drank(String water){
System.out.println("动物在喝"+water);
}
}
Person类
public class Person extends Animal{
public void drank(String water){
System.out.println("人在喝"+water);
System.out.println("喝完了"+water+"再来一杯");
}
}
运行
public class Ch02 {
public static void main(String[] args) {
Person person = new Person();
person.drank("酒");
/*输出的结果为: 人在喝酒
喝完了酒,再来一杯
*/
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· DeepSeek在M芯片Mac上本地化部署