1.接口
1.接口的介绍
2.接口的使用
1.定义接口
public interface 接口名{}
2.实现:
public class 实现类名 implements 接口名{}
3.使用:
a.实现类实现接口
b.重写接口中的抽象方法
c.创建实现类对象(接口不能直接调用new对象)
d.调用重写的方法
3.接口中的成员
3.1抽象方法
1.定义格式:
public abstract 返回值类型 方法名(形参);
2.注意:
不写public abstract 默认也有
3.使用:
a.定义实现类,实现接口
b.重写抽象方法
c.创建实现类对象,调用重写的方法
3.2默认方法
1.格式:
public default 返回值类型 方法名(形参){
方法体
return 结果
}
2.使用:
a.定义实现类,实现接口
b.默认方法可重写,可不重写
c.创建实现类对象,调用默认方法
3.3静态方法
1.定义格式:
public static 返回值类型 方法名(形参){
方法体
return 结果
}
2.使用:
接口名直接调用
默认方法和静态方法 -> 可以作为临时加的一个小功能
3.4成员变量
1.格式:
public static final 数据类型 变量名= 值
2.相关知识点:final
final代表最终的,被它修饰的变量,不能二次赋值,可以视为常量
3.特点:
不写public static final默认也有
4.使用:
接口名直接调用
5.注意:
a.被static final修饰的成员变量需要手动赋值
b.习惯上我们会将static final修饰的成员变量名大写
4.接口的特点
1.接口可以多继承 ->一个接口可以继承多个接口
2.接口可以多实现 ->一个实现类可实现一个或多个接口
3.一个子类可以继承一个父类的同时实现一个或多个接口
4.注意:
继承也好,实现接口也罢,只要是父类或者接口中的抽象方法,子类或者实现类都要重写
当一个类实现多个接口时,如果接口中的抽象方法有重名且参数一样的,只需要重写一次
当一个类实现多个接口时,如果默认方法有重名的且参数一样的,必须重写一次默认方法
5.接口和抽象类的区别
相同点:
a.都位于继承体系的顶端,用于被其他类实现或继承
b.都不能new
c.都包含抽象方法,其他子类或者实现类都必须重写这些抽象方法
不同点:
a.抽象类:一般作为父类使用,可以有成员变量,构造,成员方法,抽象方法等
b.接口:成员单一,一般抽取接口,抽取的都是方法,视为功能的大集合
c.类不能多继承,但是接口可以
2.多态
1.多态的介绍
1.前提:
a.必须有子父类继承或者接口实现关系
b.必须有方法的重写(没有重写,多态没有意义)多态主要玩的是重写方法(基本不玩变量)
c.new对象:父类引用指向子类对象
FU fu =new ZI() ->理解为大类型接收了一个小类型的数据 ->比如 double b = 10
2.注意:
父类不能直接调用子类特有功能
2.多态的基本使用
3.多态的条件下成员的访问特点
3.1成员变量
看等号左边是谁,先调用谁中的成员变量
3.2成员方法
成员方法看new的是谁,先调用谁的成员方法,子类没有找父类
4.多态的好处(为什么学多态)
1.问题描述:
如果使用原始方式new对象(等号左右两边一致),既能调用重写的,还能调用继承的,还能调用自己特有的成员。但是多态方式new对象,只能调用重写的,不能直接调用子类特有的对象,那为啥还要用多态?
2.多态方式和原始方式new对象的优缺点:
原始方式:
a.优点:既能调用重写的,还能调用父类非私有的,还能调用自己特有的
b.缺点:拓展性差
原始方式:
a.优点:扩展性强
b.缺点:不能直接调用子类特有功能
形参传递父类类型,调用此方法父类类型可以接收任意它的子类对象
传递哪个子类对象,就指向哪个子类对象,就调用哪个子类对象重写的方法
5.多态中的转型
5.1向上转型
1.父类引用指向子类对象
好比是:double b =1;
5.2向下转型
1.向下转型:好比强转,将大类型强转成小类型
2.表现方式:
3.想要调用子类特有功能,我们就需要向下转型
6.转型可能会出现的问题
1.如果等号两边类型不一样,会出现类型转换异常(ClasscastException)
2.解决:
在向下转型前,先判断类型
3.怎么判断类型:instanceof
判断结果是boolean型
4。使用:
对象名 instanceof 类型 ->判断的是关键字前面的对象是否符合关键字后面的类型