抽象类:
1.父类方法的不确定性,不能实例化。抽象方法只能在抽象类中。
2.抽象类不一定要包含abstract方法。
3.包含抽象方法的类一定是抽象类。
4.抽象方法不能有主体,即抽象方法不能实现。
//这就是一个抽象类 abstract class Animal { String name; int age; abstract public void cry();//抽象方法不能实现cry(){};错误 } //当一个类继承的父类是抽象类的话 //需要把抽象类中所有的抽象方法都实现 class Cat extends Animal{ //实现父类的cry public void cry() { //do nothing } }
接口:
1.就是给出一些没有内容的方法,封装到一起,到某个类要使用的时候,再根据具体情况把这些方法写出来。
语法:
class 类名 implements 接口{
方法;
变量;
}
注:接口是更加抽象的抽象类,抽象类里的方法可以有方法体,抽象类的方法可以有方法体(非abstract),接口里的所有方法都没有方法体。接口实现了程序设计的多态和高内聚低耦合的设计思想。
原则:
1.接口不能被实例化。
2.接口中的所有方法都不能有主体。
3.一个类可以实现多个接口。
4.接口中可以有变量,但是不能用private和protected修饰。
a.接口中的变量,本质上都是static的,而且是final的,不管你的加不加static修饰。
b.在java开发中,我们经常把常用的变量放到接口中,作为全局变量,访问形式:接口名.变量
5.一个接口不能继承其他的类,但是可以继承其他的接口。
//接口usb interface Usb { int a=0;//必须初始化 public void start(); public void stop(); } interface Killy { public void Cry(); } //相机类,实现usb接口 //重要的原则:当一个类实现了一个接口,就要求该类把这个接口的所有方法都要实现 class Camera implements Usb,Killy { public void start() { System.out.println("相机开始工作"); } public void stop() { System.out.println("相机关机"); } public void Cry(){ System.out.println("相机坏了!!!"); }; } //手机类 class Phone implements Usb,Killy { public void start() { System.out.println("手机开始工作"); } public void stop() { System.out.println("手机关机"); } public void Cry(){ System.out.println("手机坏了!!!"); }; } //计算机 class Computer { //开始使用usb接口 public void useUsb(Usb usb) { usb.start(); usb.stop(); } } public class demo { public static void main(String args[]) { Computer computer = new Computer(); Camera camera = new Camera(); Phone phone = new Phone(); //可以调用实例,因为已经实现了接口的方法 computer.useUsb(camera); computer.useUsb(phone); } }
1.实现接口可以看作是对继承的一种补充。
2.实现接口可以在不打破竭诚关系的前提下,对某个类功能扩展,非常灵活。
△前期绑定:在程序运行之前进行绑定,由编译器和连接程序实现。又叫静态绑定,例如static和final方法,注意这里也包括private方法,因为它属于隐式final。
△后期绑定:在运行时根据对象的类型进行绑定,由方法调用机制实现,因此又叫动态绑定,或者运行时绑定。除了前期绑定外的所有方法都属于后期绑定。