??????? 接口就是是Java语言中一种引用类型,是方法的集合。
??????? 假如说类的内部封装了成员变量、构造方法和成员方法,那么 接口的内部主要就是封装了方法,包含笼统方法(JDK 7及以前),默认方法和静态方法(JDK 8),私有方法 (JDK 9)。
???????? 接口的定义,它与定义类方式类似,但是使用 interface 关键字。它也会被编译成.class文件,但肯定要明确它并 不是类,而是另外一种引用数据类型。
????????? 1.接口中的方法定义不需要Abstract 来修饰,默认就是笼统的
???????? 2.接口是不可以实例化的,需要有类来实现接口的语法:
? ? ? ? ? ? class? +类名+implements +接口名,接口名,........{
//? ? 分别实现每一个接口的方法}, 继承了接口的默认方法,就可以直接调用,也可以重写。
???????? 4.在类中可以定义属性,可以通过接口的实现类的实例来访问,还可以通过接口名来访问。
? 5.接口中的属性不能被修改,我们接口的属性默认都是final static的,通常在接口中来定义属性把他作为常量,常量的名字规范是字母大写,而且多个单词之间用下划线来分隔。eg:? FILE_PATH?
6.接口可以继承接口,可以实现多级继承,多继承,多实现
要求是jdk1.7以后
1.接口中,有多个默认方法时,实现类都可继承使用。假如默认方法有重名的,必需重写一次。
2.当一个类,既继承一个父类,又实现若干个接口时,父类中的成员方法与接口中的默认方法重名,子类就近(离子类名最近)选择执行父类的成员方法。
1.接口定义是一种标准,可以使我们的代码分层开发,分板块开发。
2.降低代码的耦合性,提高代码的可扩展性和可维护性。
3.接口改变了单继承的局限。
4.接口可以实现多继承,而类不可以实现多继承。
5.解决的接口方法相同时会合二为一。
6.接口的多继承:(接口继承接口使用关键字extends),假如父接口中的默认方法有重名的,那么子接口需要重写一次。
注意:1.子接口重写默认方法时,default关键字可以保留。
?????????? 2.子类重写默认方法时,default关键字不可以保留。
1.接口的所有方法都是笼统的,笼统类里面的笼统方法可以是笼统的也可以是非笼统的。
2.接口和笼统类都不能实例化,而接口需要类来实现后实例化实现类,笼统类需要类来继承而后实现实例化子类。
3.笼统类只能单继承,接口可以单继承,也可以多继承多级继承,接口还可以多实现(jdk1.7以上)。
4.接口中的属性是static final 类型的,笼统类中的属性跟普通类中的属性没有什么区别。
5.接口中的方法默认就是笼统的,不需要加abstract,笼统类中的笼统方法需要加Abstract关键字。
是指同一行为,具备多个不同体现形式。
从继承的角度了解:父类的引用,子类的实现
Fu fu=new Zi();
实际开发的过程中,父类类型作为方法形式参数,传递子类对象给方法,进行方法的调用,更能表现出多态的扩展性与便利。
? ? ? 1.必需有继承关系,在笼统类中可以定义多态的笼统方法,通过子类来继承这个笼统类而后复写笼统类中的笼统方法以达到多态的效果。
子类的实例用父类的类型来接收
语法 :父类名+变量=new + 子类名
变量? .? 父类属性=“。。。”;//调用父类的属性,子类的特有的方法不能通过父类来调用
需要用到转型,强制转换
语法 :子类名+变量=(子类名)new +父类名
?为了避免ClassCastException的发生,Java提供了 instanceof 关键字,给引用变量做类型的效验。
变量名?instanceof?数据类型?
假如变量属于该数据类型,返回true。 假如变量不属于该数据类型,返回false。
? ? ? ? ? ? ? ? ? 定义三种方法:第一个笼统方法需要子类去实现,子类必需实现第二次扩展方法,是一个空方法,子类可以去复写也可以不复写。第三个私有的最终方法,是不可以复写的。第四个模板方法定义了每一个方法的执行顺序和逻辑。
? ? ? ? ? ? ? ? ? 需要实现笼统模板中的笼统方法,才可以扩展笼统模板中的笼统方法。