S2_OOP第二章
2024-10-15 11:12:00
第一章 继承
语法
修饰符 子类 extends 父类{
//类定义不封
}
使用extends继承父类的属性和方法、使用super关键字调用父类的方法。
概念
继承是面向对象的三大特特之一,Java只支持单继承。继承表达 is a 的关系。
在Java中,所有的Java类都直接或间接的地继承了Java.lang.object类,所有类都是Object的子类
关于修饰符可否被子类继承
继承public和protected修饰的属性和方法,不管同不同包。
继承默认权限修饰符的属性和方法,只有在同包
无法继承private修饰的属性和方法
无法继承父类的构造函数
访问修饰符 |
本地 |
同包 |
子类 |
其他 |
Private |
||||
默认 |
||||
Protected |
||||
Public |
重写和继承关系中的构造函数
子类重写父类方法
概念
在子类中根据需求对父类继承的方法进行重新编写,称为方法的重写或方法的覆盖。
方法重写的要求
- 重写方法和被重写方法必须具有相同的方法名
- 重写方法和被重写方法必须具有相同的参数列表(否则为方法重载)
- 重写方法和被重写方法必须返回值类型必须相同,或者是其子类(重写方法中的返回值类型是被重写方法返回值类型的子类)
- 重写方法不能缩小被重写方法的访问权限(可见性高于或等于被重写方法的可见性,被重写方法的修饰符不能为private,否则不能被继承)
- Super必须出现再子类(子类的方法或构造函数)中,不能再其他位置
- 可以访问父类成员(可被继承的)
- 访问父类构造函数必须在子类构造函数的第一条语句
- 子类没有通过super显示调用父类的有参构造函数,也没有通过this显示调用自身的其他构造函数,则系统默认先调用父类的无参构造函数。
- 子类构造方法中没有使用super显示调用父类的有参构造函数,则执行父类相应的构造方法,不执行父类的无参构造方法
- 子类的构造方法中通过this显示调用自身的构造函数,则在相应的构造方法中应用以上两条规则
- 存在多级继承关系,在创建子类对象时,以上规则会多次向更高一次父类应用。一直到执行顶级父类object类的无参构造函数为止
- 通过abstract关键字修饰
- 抽象类不能被实例化。抽象类可以没有、有一个、多个或者全部都是抽象方法
- 抽象方法没有方法体,只有方法声明。抽象方法必须被子类继承,否则该子类也为抽象类
- 用fianl修饰类,该类不能被继承
- 用fianl修饰方法,该方法不能被重写
- 用fianl修饰变量(成员或者局部变量)都称为常量,只能赋值一次
Super代表对当前对象的直接父类对象的默认引用
继承条件下构造函数被调用的规则
抽象类
抽象类和抽象方法
抽象类和抽象方法的特点
Fianl修饰符
Abstract修饰符
Abstract不能和private同时修饰一个方法
Abstract不能和static同时修饰一个方法
Abstract不能和final同时修饰一个方法或类
最新文章
- 操作系统IO模型
- ADT通过svn进行团队开发,svn插件不好使的解决方案
- ASP.NET 尖括号 百分号 井号 等号 的用法
- MVC怎么在同一个action返回两个表的数据
- ecshop获取浏览器各个版本
- 大学二三事——那些人(1)
- ArcGIS制图表达Representation实战篇4-自由式制图表达
- Python:学会创建并调用函数
- JAVA继承:编译与运行的关系(编译看左边,运行看右边)
- .6-Vue源码之AST(2)
- RabbitMQ的应用场景以及基本原理介绍
- ssh 报error: kex protocol error: type 30 seq 1
- Linux远程登录ssh免密码配置方法(仅供参考)
- transform:rotate3d/tranlate3d
- mongoose的关联查询 :populate
- 深入理解JVM(五)JVM优化策略
- ArrayList源码分析笔记(jdk1.8)
- java多线程找素数实例
- 【51nod】1655 染色问题
- 一个不错的在线的js调试器