一、抽象类和接口
1、抽象类
Java允许在定义方法时不写方法体,不包含方法体的方法为抽象方法,抽象方法必须 使用 * abstract *关键字来修饰。
abstract void shout(); // 定义抽象方法shout()
注:包含抽象方法的类必须声明为抽象类,但抽象类可以不包含任何抽象方法,只需使用abstract关键字来修饰即可。另外,抽象类是不可以被实例化的,因为抽象类中有可能包含抽象方法,抽象方法是没有方法体的,不可以被调用。如果想调用抽象类中定义的方法,则需要创建一个子类,在子类中将抽象类中的抽象方法进行实现。
例:如何实现抽象类中的方法
//定义抽象类Animal
abstract class Animal {
//定义抽象方法shout ()
abstract void shout () ;
}
//定义Dog类继承抽象类Animal
class Dog extends Animal {
//实现抽象方法shout ()
void shout() {
System. out.println(“注汪....”);
}
}
//定义测试类
public class Example10 {
public static void main(String[] args) {
Dog dog= new Dog(); //创建 Dog类的实例对象
dog.shout(); //调用dog对象是的shout()方法
}
}
二、接口
如果一个抽象类中所有方法都是抽象的,则可以将这个类用另一种方式来定义,即 接口。
在接口定义时,需要使用interface关键字来声明。
例:
interface Animal {
int ID=1; //定义全局常量
void breathe(); // 定义抽象方法
void run();
}
注: (1)、接口中定义的方法默认使用“public abstract”来修饰
(2) 、接口中的变量默认使用“public final”来修饰。即全局变量。
由于接口中的方法都是抽象方法,因此不能通过实例化对象的方式来调用接口中的方法。此时需要一个定义类,并使用implements关键字实现接口中所有的方法。
2、接口的特点
-
接口中的方法都是抽象的,不能实例化对象。
-
需要实现接口中的所有方法。
-
一个类通过implements关键字实现接口时,可以实现多个接口,被实现的多个接口之间要用逗号隔开。
具体示例如下:interface Run {
程序代…
interface Fly {
程序代码…
class Bird implements Run,Ely (
程序代码…
}
-
一个接口可以通过exeds关键字继承多个接口,接口之间用逗号隔开。
例如下:
interface Running {
程序代码…interface Flying {
程序代码…Interface Eating extends Running,Flying {
程序代码… -
一个类在继承另一个类的同时还可以实现接口,此时,extends关键字必须位于
implements关键字之前。
具体示例如下:class Dog extends Canidae implements Animal { //先继承,再实现 程序代码..... }