day01-继承

继承的概述
面向对象的三大特征(封装、继承、多态)之一
Java中的继承让类与类之间产生的了关系(子父类关系),子类可以拥有父类中的内容,同时子类自己还可以拥有特有的内容。

继承的格式
public class 子类 extends 父类{}// 父类肯定是先定义好的类
public class Zi extends Fu{}
父类:也可以称为超类、基类
子类:也可以称为派生类

继承的优缺点
优点
1、提高代码的复用性
2、提高代码的可维护性
3、继承是多态的前提之一
缺点
让类与类之间的关联更加紧密(耦合性更强),破坏了子类的独立性

继承的注意事项
1、Java中类的继承只支持单继承,不支持多继承(一个儿子只能有一个亲爹)
A类就被多个类(B和C类)同时继承
public class A {}
public class B {}
public class C extends A,B {}// ×,这是多继承,Java不支持
2、Java支持多层继承
public class A {}
public class B extends A{}
public class C extends B{}
3、一个类可以被多个类同时继承
public class A {}
public class B extends A{}
public class C extends A{}

继承中成员的特点
成员变量
就近原则(谁离我近我就使用谁)
首先找方法中的局部变量,如果有就使用局部变量
如果没有则找本类的成员变量,如果有就使用本类成员变量
如果没有则找父类的成员变量,如果有就使用父类成员变量,如果没有,则报错
构造方法
一定会先执行父类的构造方法,再执行子类的构造方法
在每一个构造方法的第一行默认有一行super();这样的代码,默认调用的是父类的无参构造方法
如果我们在构造方法中手动写上super(参数)或者this(参数)这样的代码来调用构造方法则默认的super();就会没有
this(参数)或者super(参数)调用本类或者父类构造方法的代码,必须位于构造方法的第一行有效代码
所以在一个构造方法中,不能通过出现这两行代码
成员方法
先找本类的方法,本类没有再找父类,父类也没有则报错

this和super关键字
this:记录的是本类的对象的地址,表示所在类的对象,谁来调用方法就表示哪个对象调用本类内容
1、调用本类的成员变量 this.成员变量( 可以区分局部变量和成员变量)
2、调用本类的成员方法 this.成员方法();
3、调用本类的构造方法 this(参数);
super:可以认为记录父类的对象的地址(表示父类的那片内存空间)调用父类内容
1、调用父类的成员变量 super.成员变量
2、调用父类的成员方法 super.成员方法();
3、调用父类的构造方法 super(参数);

方法重写
什么是方法重写(override)
方法重写也可以称为方法覆盖、方法复写
在有继承关系的两个类(子类和父类)中,子类对父类继承下来的方法进行重新改写的过程,
重新改写过程中,方法的声明一般不变,修改的是方法体内容。
方法重写的原则
方法的声明一般不变,但是也是可以改变的 ,一大两同两小
一大:子类重写的方法的权限修饰符必须大于等于父类方法的权限修饰符 权限修饰符 public > protected > 默认 > private
两同:
方法名必须相同
参数列表必须相同
两小:
子类重写的方法的返回值类型必须小于等于父类方法的返回值类型(针对引用类型有效,针对基本类型无效)
子类重写的方法的所抛异常必须小于等于/少于等于父类方法所抛异常,如果父类方法没有抛异常,则子类重写的方法一定不能抛异常
@Override注解
可以检测一个方法是否是重写的方法

方法重载(overload)和方法重写(override)的区别
重载:
同一个类中
方法名相同
参数列表不同
只和以上三个条件有关,和其他(权限修饰符、返回值类型等)的无关
重写:
有继承的两个类中
方法名相同
参数列表也要相同
和其他的(权限修饰符、返回值类型等)有关的

posted @   LinkiBieber  阅读(28)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示