一、抽象类与抽象方法
//抽象类
public abstract class Pet {
//抽象方法
public abstract void toHospital() ;
}
抽象类和普通类的区别:有无方法体
抽象类不能被实例化但可以创建一个引用变量,其类型是一个抽象类,指向非抽象的子类实例
普通类可以被实例化
抽象类和抽象方法的使用:
抽象类可以没有抽象方法,但有抽象方法的类必须为抽象类
子类如果没有实现父类的所有抽象方法,那子类必须被定义为抽象类
没有抽象构造方法,也没有抽象静态方法
抽象类中可以有非抽象的构造方法,创建子类的实例时可能调用
二、接口
public interface MyInterface {
//所有方法默认都是:public abstract
public void foo();
//其他方法
}
接口的特性:
接口不可以被实例化
实现类必须实现接口的所有方法
实现类可以实现多个接口:implements、多个接口使用逗号隔开
接口中的变量都是静态常量(public static final)
接口的实现:
1.先编写一个接口,根据需求设计相应的方法
2.编写一个实现类,使用 implements 连接接口,再实现接口中的所有方法
//接口A
public interface InterfaceA {
//接口A中的方法
public void printCapitalLetter();
}
//接口B
public interface InterfaceB {
//接口B中的方法
public void printLowercaseLetter();
}
//类 Print 分别实现接口InterfaceA和InterfaceB
public class Print implements InterfaceA, InterfaceB{
@Override
public void printCapitalLetter() {
System.out.print("大写英文字母表:");
for (char i = 'A'; i <= 'Z'; i++){
System.out.print(i+ " ");
}
System.out.println();
}
@Override
public void printLowercaseLetter() {
System.out.print("小写英文字母表:");
for (char i = 'a'; i <= 'z'; i++){
System.out.print(i+ " ");
}
System.out.println();
}
}
注:接口是一种能力,接口是一种约束