接口和抽象类的选择
既然接口是一种特殊的抽象类,那么在开发中,何时选用接口?何时选用抽象类呢? 对于它们的选择,在开发中是一个很重要的问题,特别总结两句话给大家; A、优先选用接口 B、在既要定义子类的行为,又要为子类提供公共的功能时应选择抽象类。
* 接口:定义形式
* 可以把接口看做特殊的类
* interface 接口名
* {
* 全局常量(public static final)
* 抽象方法(public abstract)
* }
* 接口是可以多实现的:因为接口中的方法都是抽象的,都没有实现,在创建子类对象并调用该重写的抽象方法时很明确就是
* 调用重写之后的方法,不会出现调用的不确定向
*
* 接口解决了java单继承的问题
*/
interface inter{
public static final int num=25;//public static final默认就有
void show();//public abstract默认就有;接口中的方法都是抽象方法
}
interface inter2{
public abstract void fun();
}
class Test1 implements inter,inter2{
@Override
public void show() {
System.out.println("show");
}
@Override
public void fun() {
System.out.println("fun");
}
}
public class Demo5{
public static void main(String[] args) {
Test1 test1=new Test1();
test1.show();
test1.fun();
//三种访问静态常量的方法
System.out.println(test1.num);
System.out.println(Test1.num);
System.out.println(inter.num);
}
}
================================================================================================
/*一个类在继承的同时还可以去实现接口】
*
* 类和类之间是继承的关系
* 类和接口之间是实现的关系
*
* 通过继承可以得到该继承体系的基本功能
* 通过实现接口可以得到继承体系之外的功能
*
*/
class Person{
}
interface inter{
public final static int num=25;
public abstract void show();
}
class Student extends Person implements inter{
@Override
public void show() {
}
}
/*
* 接口和接口之间是继承的关系,而且可以多继承
*
* interface inter1{}
*
* interface inter2 extends inter2{}
*
* interface inter3 extends inter1,inter2{}
*/
public class Demo5{
public static void main(String[] args) {
}
}
============================接口小实例
Usb接口
package Demo1;
public interface Usb {
public void open();
public void close();
}
Mouse
package Demo1;
public class Mouse implements Usb {
public void open() {
System.out.println("Mouse open");
}
public void close() {
System.out.println("Mouse close");
}
}
KeyBoard
package Demo1;
public class KeyBoard implements Usb{
public void open(){
System.out.println("keyboard open");
}
public void close(){
System.out.println("keyboard close");
}
}
NoteBook
package Demo1;
public class NoteBook {
public NoteBook(){};
public void run(){
System.out.println("笔记本运行");
}
//使用usb设备
public void useUsb(Usb usb){
usb.open();
usb.close();
}
}
Test
package Demo1;
public class Test {
//笔记本运行
//笔记本适使用键盘
public static void main(String[] args) {
NoteBook book=new NoteBook();
book.run();
KeyBoard board=new KeyBoard();
book.useUsb(board);//Usb是个接口,想用哪个用哪个,这样方便
}
}