黑马程序员技术交流社区

标题: 听课笔记 [打印本页]

作者: Honne    时间: 2019-8-1 15:53
标题: 听课笔记
抽象 接口 多态
--------------------------------------抽象
抽象方法: 就是加上abstract关键字,然后去掉大括号,直接分号结束
抽象类: 抽象方法所在的类必须是抽象类,在class之前加上abstract即可

如何使用抽象类和抽象方法
1.不能直接创建new抽象类对象
2.必须用一个子类来继承抽象父类
3.子类必须覆盖重写抽象父类当中所有的抽象方法
4.创建子类对象进行使用

注意事项:
1.抽象类不能创建对象,只能创建其非抽象子类的对象
2.抽象类中,可以有构造方法,是供子类创建对象时,初始化父类成员使用的
3.抽象类中,不一定包含抽象方法,只要保证抽象方法所在的类是抽象类,即可
这样没有抽象方法的抽象类,也不能直接创建对象,在一些特殊场景中使用
4.抽象类的子类必须重写父类中所有的抽象方法,或者自己也变成抽象类,并继承给下一个子类

--------------------------------------------接口
接口就是多个类的公共规范
接口是一种引用数据类型
定义接口的格式:
public interaface 接口名称{
接口内容
}
接口中可以包含的内容有
1.常量
2.抽象方法
3.默认方法
4.静态方法
5.私有方法

注意事项:
1.接口当中的抽象方法,修饰符必须是两个固定的关键字,public abstract
2.这两个关键字修饰符,可以选择性省略.
3.方法的三要素可以随意定义

接口使用的步骤
1.接口不能直接使用,必须有一个"实现类"来"实现"接口
格式:
public class 实现类名称 implements 接口名称{
// ...
}
2.接口的实现类必须覆盖重写(实现) 接口中所有的抽象方法
3.创建实现类的对象,进行使用

注意事项:
如果实现类没有覆盖重写接口中所有的抽象方法,那么这个实现类自己就必须是抽象类

接口的默认方法
格式
public default 返回值类型 方法名称(参数列表) {
方法体
}
备注: 接口的默认方法可以解决接口升级的问题,不强制要求覆盖重写

接口的静态方法
格式:
public static 返回值类型 方法名称(参数列表) {
方法体
}
注意:不能通过接口实现类的对象来调用接口当中的静态方法
静态方法的使用:
通过接口名称,直接调用其中的静态方法
格式: 接口名称.静态方法名(参数);

接口的私有方法
普通私有方法:解决多个默认方法之间重复代码问题
private 返回值类型 方法名(参数列表) {
方法体
}
静态私有方法:解决多个静态方法之间重复代码问题
private static 返回值类型 方法名(参数列表) {
方法体
}

接口的常量定义和使用
接口当中也可以定义"成员变量",但是必须使用public static final三个关键字进行修饰
从效果上看,这就是接口的[常量]
格式:
public static final 数据类型 常量名称 = 数据值;

------------------------多态
其实就是一句话:父类引用指向子类对象
格式:
父类名称 对象名 = new 子类名称();
或者
接口名称 对象名 = new 实现类名称();

访问成员变量的两种方式
注意事项:
成员变量不能被重写
1.直接通过对象名称访问成员变量,等号左边是谁,优先用谁,没有则向上找
2.间接通过成员方法访问:该方法属于谁则用谁,没有则向上找
子类没有覆盖重写,就是父
子类如果覆盖重写,就是子

口诀:编译看左边,运行看左边

访问成员方法的两种方式
在多态的代码当中,new的是谁,就优先用谁,没有则向上找

口诀:编译看左边,运行看右边

接口名称 instanceof 实现类
意思是






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2