接口
语法:interface 接口名 (I 开头 或者 Interface结尾)
-
接口中的抽象方法的访问修饰符只有public,不写默认就是public
-
抽象方法没有方法体
作用:统一方法的标准
用法:
-
接口创建出来都是给类使用的
-
类需要通过implement关键字来实现接口 也就是类和接口的关系是implement
class A implement 接口名 { A类实现接口:使用这个接口里面的方法标准}
A 是接口的实现子类,接口是A的父接口
-
一个类实现一个接口,就需要重写接口中的所有的抽象方法
-
一个类可以实现多个接口
-
接口也还可以继承接口,是多继承
interface 接口B extends 接口A {接口B继承接口A} 接口A:父接口 接口B:子接口
函数式接口:如果一个接口中有且仅有一个抽象方法(除了object中的方法),那么这个接口就是函数式接口
多态
-
多态:就是对对象的向上造型也就是说同一个方法可以根据发送对象的不同而采取多种不同的行为方式
1)、一个对象的实际类型虽然是确定的,但是可以指向对象的引用的类型有很多
2)、创建子类对象,然后用父类的变量来接收
3)、必须是父类跟子类的关系,继承关系
-
多态的特征:
多态创建是父类对象,多态的方法的多态,属性没有多态
1)、屏蔽了子类的特有成员,只能访问父类有的成员(因为创建对象的时候在堆中开辟了一片空间,但是这个空间中的东西是从元空间里面复制而来,由于创建子类的时候用的是父类修饰的对象,所以会向上转型成父类,那么现在复制的就是父类的成员)
2)、如果调用的方法被子类重写,则会调用子类重写后的方法
-
多态的作用:
1)、创建抽象类的对象
2)、创建接口的对象
3)、可以减少很多重载方法的书写
4)、可扩展性
-
对象的向下造型
1)、如果没有多态,没有使用多态创建的父类对象是不能转换为子类的对象的
Person p = new Student( ) // 创建了一个Student的对象用Person父类的类型来接受,这时候堆中就有了Student对象,就可以向下转型
Student s = (Student) p
-
不能重写的情况:
1)、static方法不能被重写,他是属于类的,不属于实例
2)、final常量
3)、private方法
instanceof关键字
作用: 判断这个父类是否由子类创建
用法: if (父类对象 instanceof 子类的类名){ 如果为ture 就可以将父类对象向下转型 }