1.抽象类和抽象方法(abstract关键字)
1.抽象方法
使用abstract修饰的方法,没有方法体,只有声明。定义了一种规范。其所在的抽象类的子类必须给抽象方法提供具体的实现。
2.抽象类
有抽象方法的类就是抽象类。通过抽象类,我们可以严格限制子类设计,使子类之间更加互通
例:
注:
1.有抽象方法的类只能定义成抽象类
2.抽象类不能实例化,不能通过new来实例抽象类
3.抽象类可以包含属性、方法、构造方法。但是构造方法不能用来new实例,只能用被子类调用
4.抽象类只能用来被继承
5.抽象方法必须被子类实现(重写)。
2.接口(interface)
接口是比“抽象类”还“抽象”的“抽象类”,可以更加规范的对子类进行规范。全面地专业地实现了:规范和具体实现的分离
抽象类中还有普通的方法,某些具体的实现,而接口中全部都是抽象方法。
接口中的抽象方法的abstract可以省略
例:
接口的本质就是锲约,就是规范。
比如在电脑中,外接鼠标,外接键盘,外接u盘,都是usb接口。
类似的除了usb,还有耳机的3.5毫米,手机的typc ,iPhone的lighting,电饭锅和冰箱的三角插头,这些都可以理解为接口。
放在一台笔记本上形容最合适,一个笔记本就是一个程序,他的usb就是程序的接口,
你可以通过接口来给笔记本扩展功能。
注:接口是可以多继承的,继承多个接口
形式:
【修饰访问符】 interface 【接口名】 extends 【父接口1】,【父接口2】。。。。{
定义常量;
定义抽象方法;
}
注:
1.访问修饰符只能是public和默认
2.接口名和类名命名机制一样
3.接口可以多继承
4.接口中的属性只能是常量,总是public static final修饰(默认不写也是)。
5.接口中方法永远是public abstract(默认不写也是)。
接口的实现
1.子类通过interface来实现接口中的规范
2.接口不能创建实例,但是可以用于声明引用变量
3.一个类实现了接口,必须实现接口中所有方法,并且这些方法只能是public
例:
接口之间的多继承
接口c继承接口a和接口b的方法,实现接口c的类中必须包含a,b,c三个接口的所有方法
注:
问:JAVA中有没有多继承?
1.java的类没有多继承,只单继承
2.java的接口有多继承