抽象方法和抽象类
当一个方法没有具体的方法体和操作实现,则这个方法被称为抽象方法,用abstract修饰
public abstract<returnType><methodName>(...);
抽象类就是不能实例化的类,即没有具体实例对象的类
public abstract class Shape{
//类体
}
特点:
a、抽象类中可以包含任意合法的方法;可以包含任意合法的成员变量,
b、抽象类中的方法必须由子类实现,子类如果没有实现父类的所有的抽象方法,则子类必为抽象类
c、含有抽象方法的类一定是抽象类,但是抽象类不一定含有抽象方法
接口
如果一个抽象类中只有抽象方法,则该抽象类可以被定义为接口,关键字interface,实现类通过implements关键字实现该抽象类中的抽象方法
public interface IMammal{ //定义IMammal接口
//类体
}
public class Whale implements Mammal{ //实现类Whale
//类体
}
特点:
a、接口不能创建对象,接口名常常I开头
b、接口中的抽象方法默认为 public abstract 可以省略,但只能是public
c、接口可以继承多个接口,一个类也可以实现多个接口,每个接口之间用逗号间隔
Tip:可以使用instanceof关键字判断对象是不是一个接口的实现类创建的,返回值为true or false
public interface IMammal extends I,II{ //定义IMammal接口继承I,II接口
//类体
}
public class Whale implements I,II{ //定义Whale类实现I,II接口
//类体
}
System.out.println(new Whale().instanceof I); //结果为true
抽象类和接口的区别
a、定义:抽象类关键字 abstract , 接口关键字interface
b、构造方法:抽象类有构造方法 ,接口没有构造方法
c、继承:抽象类只能单继承 ,接口可以继承多个接口
d、实现:抽象类型用关键字extends ,接口关键字implements
e、成员变量:抽象类可以定义任何合法的成员变量, 接口只能定义public static final的变量即常量
f、方法:抽象类可以定义任意合法方法,接口中只能定义抽象方法,JDK8.0及以上版本可以定义多个static或default修饰的具体方法