1.抽象类
public abstract class animal(){}
有abstract修饰的类,里面可以定义抽象方法
public sbstract void sleep(); //抽象方法
如果子类继承了一个抽象父类,
则子类必须重写父类抽象方法
抽象类不能创建对象
final 和 abstract不能同时使用
2.接口
[public] interface 接口名 extends父接口1,父接口2{
//零到多个常量的定义
//零到多个抽象方法的定义
int num=100; //前面默认加了public static final
void f1(); //前面默认加了public abstract修饰
}
package com.langsin.inter;
public interface interface1 {
int num=100;
void f1();
//可以包含静态方法
static void f2(){}
//可以包含私有的普通方法
private void f3(){}
//可以有使用default修饰的方法
default void f4(){
}
}
3.接口的使用
package com.langsin.computer; public class Printer implements Out{ //针式打印机类 public void print(){ System.out.println("针式打印机正在工作"); } }
public class NewPrinter implements Out{ public void print(){ //喷墨打印机类 System.out.println("喷墨打印机"); } }
public class BetterPrinter implements Out{ //3D打印机类 public void print(){ System.out.println("3D打印机正在工作"); } }
public interface Out { //打印机需要继承的接口Out void print(); }
public class PrinterFactory { //打印机工厂类,提供静态方法创建对象 //当新的打印机问世时,只需改变静态方法返回值就可以了 public static Out getPrinter(){ return new BetterPrinter(); } }
public class Computer1 { //需要使用打印机非静态打印方法的电脑类 //将打印机工厂静态方法返回的对象赋给一个Out类型的变量 //当有新打印机问世时,只需要改变打印机工厂静态方法返回的对象就可以了 //调用新打印机类的方法 static Out printer1=PrinterFactory.getPrinter(); public static void main(String[] args) { printer1.print(); } }