抽象方法的定义语法:
访问修饰符 abstract <返回类型> <方法名>(参数列表);
在语法中:abstract关键字表示该方法被定义为抽象方法
抽象方法和普通方法的区别:
1、抽象方法小修饰符abstract,普通方法不需要
2、普通方法有方法体,抽象方法没有方法体
**********************************************************
抽象类的定义语法:
abstract class <类名>{ }
在语法中:abstract关键字表示该类被定义为抽象类
抽象类和普通类的区别:
1、抽象类需要修饰符abstract,普通类不需要
2、普通类可以实例化,抽象类不能实例化
**********************************************************
定义一个抽象类:
public abstract class 类名称{
修饰符 abstract 返回类型 方法名();
修饰符 返回类型 方法名(){方法体}
}
抽象方法只能定义在抽象类中。但是抽象类中可以包含抽象方法,也可以包含普通方法,还可以包含普通类包含的一切成员。
**********************************************************
接口的定义语法:
public interface 接口名{
//接口成员
}
在语法中:
1、和抽象类不同,定义接口使用interface修饰符,访问修饰符只能是public,且可选。
2、接口成员可以是全局常量和公共的抽象方法。
与抽象类一样,接口要使用也必须通过子类,子类通过implements关键字实现接口。
实现接口的语法:
public 类名 implements 接口名{
实现方法
普通方法
}
在语法中:
1、实现接口使用implements关键字
2、实现接口的类必须实现接口中定义的所有抽象方法。接口的实现类允许包含普通方法。
例:定义和实现USB接口,进行数据传输。关键代码:
public interface UsbInterface{
void service();
public class UDisk implements UsbInterface{
public void service(){
system.out.println("连接USB口,开始传输数据");
}
}
}
例:定义USB风扇类,实现USB接口,获得电流,让风扇转动。关键代码:
public class UsbFan impements UsbInterface{
public void service(){
system.out.println("连接USB口,获得电流,风扇开始转动。")
}
}
例:编写测试类,实现U盘传输数据,实现USB风扇转动。关键代码:
public class Test{
public static void main(string[] args){
//1、U盘
UsbInterface uDisk = new UDisk();
uDisk.service();
//2、USB风扇
UsbInterface usbFan = new UsbFan();
usbFan.service();
}
}
**********************************************************
接口继承的语法:
修饰符 interface 接口名 extends 父接口1,父接口2,……{
常量定义
方法定义
}
一个普通类只能继承一个父类,但能同时实现多个接口,也可以同时继承抽象类和实现接口
实现多个接口的语法:
class 类名 extends 父类名 implements 接口1,接口2,……{
类的成员
}
**********************************************************
定义和实现接口,需要注意的内容:
1、接口和类、抽象类是一个层次的概念,命名规则相同。
2、修饰符如果是public,该接口在整个项目中可见。如果省略修饰符,该接口只在当前包可见。
3、接口中可以定义常量,不能定义变量。接口中的属性都默认用“public static final”修饰,即接口中的属性都是全局静态常量。接口中的常量必须在定义时指定初始值。
4、接口中的所有方法都是抽象方法,接口中的方法都默认为public。
5、和抽象类一样,接口同样不能实例化,接口中不能有构造方法。
6、类只能继承一个父类,但可以通过implements实现多个接口。一个类必须实现接口的全部方法,否则必须定义为抽象类。一个类在继承父类的同时又实现了多个接口时,extends必须位于implements之前