目录
抽象:
1.抽象类:
2.语法格式:
3.实例对象:
4.数据类型
5.构造方法
6.抽象方法:
接口:
1.简介:
2.定义接口:
3.实现:
5.类和接口之间的向下转型:
6.转型:
7.内容:
思维导图:
抽象:
1.抽象类:
概念:类的进一步抽象,是指没有方法体的方法,同时抽象方法还必须使用关键字abstract做修饰。
2.语法格式:
概念:类的进一步抽象,是指没有方法体的方法,同时抽象方法还必须使用关键字abstract做修饰。
在返回值类型前加个abstract
3.实例对象:
步骤:
1.不能直接创建抽象类对象
2.必须用一个子类来继承父类
3.非抽象子类必须覆盖重写抽象父类当中的所有抽象方法
4.去掉方法中的abstract关键字,补上方法体大括号
5.创建子类对象进行使用
4.数据类型
1.不能直接创建抽象类对象
2.必须用一个子类来继承父类
3.非抽象子类必须覆盖重写抽象父类当中的所有抽象方法
4.去掉方法中的abstract关键字,补上方法体大括号
5.创建子类对象进行使用
引用数据类型
5.构造方法
用来给子类调用的
6.抽象方法:
判断:
当无法确定方法的方法体是否执行时即为抽象方法
格式:
public abstract void 方法名( );
条件:
抽象方法所在的类必须是抽象类
接口:
1.简介:
判断:
当无法确定方法的方法体是否执行时即为抽象方法
格式:
public abstract void 方法名( );
条件:
抽象方法所在的类必须是抽象类
1.简介:
在生活中
接口就是一种公共的规范标准
在java中
接口就是多个类的公共规范
其中最重要的内容就是抽象方法
2.定义接口:
语法格式:
修饰符列表 interface 接口名 { }
3.实现:
1.接口不能直接使用,必须有一个实现类才能实现该接口
格式:
public class 实现类名称 implements 接口名称
2.接口的实现类必须覆盖重写(实现)接口中的所有抽象方法
覆盖重写抽象方法
去掉abstract关键字,加上方法体大括号
3.创建实现类的对象,并使用
注意:
如果实现类并没有覆盖接口中的所有方法,那么这个实现类必须是抽象类
语法格式:
修饰符列表 interface 接口名 { }
1.接口不能直接使用,必须有一个实现类才能实现该接口
格式:
public class 实现类名称 implements 接口名称
2.接口的实现类必须覆盖重写(实现)接口中的所有抽象方法
覆盖重写抽象方法
去掉abstract关键字,加上方法体大括号
3.创建实现类的对象,并使用
注意:
如果实现类并没有覆盖接口中的所有方法,那么这个实现类必须是抽象类
4.当继承和接口同时出现时:
extends 关键字在前,implement 关键字在后
5.类和接口之间的向下转型:
继承关系中:
如果不存在继承关系
编译无法通过
必须存在继承关系才能向下转型
编译通过
可能会出现ClassCastException
类与接口之间:
不存在继承关系也能向下转型
编译能通过
可能会出现ClassCastException
6.转型:
类和接口之间没有继承关系也能进行强转:
前提:该类是个该接口
否则会出现ClassCastException
接口之间没有继承关系也能进行强转:
接口引用指向的实现类 要实现进行强转的全部接口
编译运行都能通过
接口引用指向的实现类 没有实现进行强转的全部接口
编译能通过,运行出现ClassCastException异常
7.内容:
抽象方法:
注意:
接口中的抽象方法,修饰符必须是public abstract两个固定的关键字
这两个修饰符,可以选择性省略(初学不建议)
方法的三要素可以随意定义
常量:
格式:
public static final 常量类型 常量名 = 字面值;
命名规范:
全部字母都大写,每个单词用下划线分隔开
注意:
public static final可以省略
接口中的常量,必须赋值,不能不赋值
没有构造方法
注意:
接口不能有静态方法块和构造方法
多继承
一个类只能有一个父类,但一个类可以实现多接口
如果实现类中所实现的多个接口当中,存在重复的抽象方法,那么只需要覆盖一次即可
如果实现类没有覆盖所有的抽象方法,则该实现类必须时个抽象类
继承中必须有继承关系编译才能通过(静态绑定)
思维导图:
抽象:
接口:



