面向对象进阶
继承
1、作用:提高代码复用性,子类可以直接使用父类的非私有成员
2、格式:public static 子类名 extends 父类名{。。。}
3、使用继承前提:子类和父类要具备is a 的关系(包含关系)
4、注意事项:1.Java只能单继承,不能多继承,但是可以多层继承
5.继承后成员的访问特点:
-
1、成员变量的访问特点
- 1、就近原则
- 2、如果子类局部有,优先访问局部的
- 3、如果局部没有,找子类成员位置
- 4、如果子类成员位置没有,找父类成员位置
- 5、如果找不到,报错
-
2、成员方法的访问特点
- 1、就近原则
- 2、子类有,就访问子类的
- 3、子类没有,就访问父类的
- 4、父类没有就报错
-
3、如何访问父类中和子类同名的成员:
-
1、默认访问子类自己的
-
2、非要访问子类自己,使用super成员名字
- super.属性名
- super.方法名(参数)
-
3、super写在哪个类,就代表哪个类的父类
-
6、方法重写:
-
1、方法重写的作用注意事项
- 子类重写的方法名和参数列表和父类相同
- 重写的方法访问权限要大于等于父类
-
2、利用@Override检测方法重写的正确性
7、方法重写的应用
- 1、Object类的toString()方法
- 2、如果父类的方法不能完全满足子类的需求,就可以让子类重写方法
8、继承后构造器的访问
- 1、调用子类任何构造,都会默认先调用父类空参构造
- 2、父类如果没有空参构造,就需要手动使用super(参数),调用父类有参构造。调用父类构造,需要放在子类构造器的第一行
9、this和super
- 1、super(参数)访问父类构造器
- 2、this(参数)访问本类构造器:放在构造器的第一行
- 3、this(参数)和super(参数)的位置:构造器的第一行
2.final
1、final关键字的特点
-
1、修饰类:不能被继承
-
2、修饰方法:不能被子类重写
-
3、修饰变量(也叫常量,命名规则:单词全部大写,下划线隔开):
- 1、修饰基础数据类型,变量存储的数据值不能改变
- 2、修饰引用数据类型,变量存储的地址值不能改变
3、static
1、static修饰变量的用法
-
1、静态变量的定义和调用格式
- 定义格式:static变量类型 变量名;
- 调用格式:推荐类名调用,类名.属性名;
-
2、static内存原理:随着类的加载而加载,所有对象共享
2、static修饰方法的用法:
-
1、静态方法的定义和调用格式:
- 权限修饰符static返回值类型 方法名(参数列表){…}
- 调用格式:推荐类名调用,类名.方法名(参数);
-
2、静态方法的访问特点
- 静态成员只能访问静态成员
3、静态代码块
-
1、静态代码块的格式和执行特点
- 格式:static{…}
- 位置:类中方法外
- 特点:类加载的时候自动执行,只执行一次
-
2、构造代码块的格式和执行特点
- 格式:{…}类中方法外
- 特点:构造方法执行之前执行,构造方法执行几次,他就执行几次
面向对象进阶
1、工具类和制作帮助文档
1、math类的作用
- 1、提供了一些处理数学基本运算的功能
2、Math类的常用方法
-
abs方法:
- 求绝对值
-
max:最大值
-
ceil:对一个小数向上取整
-
floor:对一个小数向下取整
-
pow:求一个数的几次幂
3、Math类的构造器:
- Math类的构造器被私有
2、包和导包&权限修饰符
1、包和导包
-
1、包的定义格式
- package 包名;
- 类文件的第一行
-
2、导包格式
- import 包名.类名;
2、修饰权限符
- private——缺省——protected——public
3、抽象类
1、格式
- public abstract class 类名{
权限修饰符 abstract 返回值类型 方法名(形参列表);}
2、基本使用:
- 1、抽象类不能创建对象,所以他是作为父类,让子类继承使用
- 2、抽象类的作用:可以给子类提供拥有制定的功能,但是不要求具体实现,有一定的灵活性
3、特点:
- 不能创建对象
- 一个类里面有的,抽象类都有
4、抽象类的应用:
- 1、作文模板
- 2、把需要给子类直接使用的模板定义成实例方法,并且用final修饰
- 3、需要子类自己制定的功能,定义成抽象方法
- 4、具备一个功能,可以协调模板和抽象方法,组成一个合理的逻辑
4、接口:
1、概述:
-
1、格式:
- public interface 接口名{
静态常量;抽象方法//JDK8之前
}
- public interface 接口名{
-
2、基本使用
- 让类去实现的,一个类实现接口,要重写他的所有抽象方法
-
3、特点:
- 1、接口没有构造器
- 2、就扣不能实例化
- 3、接口可以多继承,也可以多实现
2、接口和类的区别
-
1、类与类的关系
- 继承关系,只有单继承,所以抽象类只能单继承
-
2、类与接口的关系:
- 多实现,一个类可以实现多个接口,所以接口的拓展性比抽象类强
-
3、接口和接口的关系:
- 多继承
3、JDK8接口新增的方法:
-
1、默认方法:
- 用public default
- 接口的实现类对象调用
-
2、静态方法
- 用public static 修饰
- 接口名调用
-
3、私有方法
- 用privite修饰
- 只能在接口内部调用
5、多态
1、多态概述
-
1、什么是多态
- 同种事物,调用同一个功能,呈现出不同的状态
-
2、多态的表现形式
- 有继承或者实现的关系
- 有方法的重写
- 重要:有父类引用指向子类对象/有接口引用指向实现类对象
2、多态的好处与弊端:
-
1、多态的好处:
- 应用在方法的形参上,可以提高一个方法的扩展性
-
2、多态的弊端
- 多态下不能使用子类的特有功能
3、多态的转型
-
1、转型格式
- 子类类名 变量名=(子类类名)被强转的对象;
-
2、instanceof 关键字
- 判断左边的对象是否是右边的类型,是返回true,否则返回false