一、抽象类
类用abstract修饰的,且至少有个抽象方法。
1 /** 2 * 抽象类 3 */ 4 public abstract class Simple { 5 public String aMethod() { 6 return "in aMethod"; 7 } 8 9 public abstract String bMethod();10 11 /*12 * Simple simple = new Simple();13 * 因为Simple是一个抽象类,它类中有个方法缺少定义,所以无法实例化Simple类14 * Simple simple = new Simple();//是非法的15 * 但Simple simple;是合法的,但没有意义(现在)。16 */17 18 /*19 * 抽象类的作用:20 * 通过继承来扩充它,子类可以对抽象方法提供自己的定义。21 * 例子:类Child1,Child2是Simple的子类22 */23 24 public class Child1 extends Simple {25 @Override26 public String bMethod() {27 return "in bMethod of Child1";28 }29 30 }31 32 public class Child2 extends Simple {33 34 @Override35 public String bMethod() {36 return "in bMethod of Child2";37 }38 39 }40 41 /*42 * 下面的定义将有意义:43 * Simple simple ;44 * int code;45 if(1 == code){46 simple = new Child1();47 }48 else if(2 == code){49 simple = new Child2();50 }51 simple.bMethod();52 */53 54 }
二、接口
1、接口中所有方法都是抽象的,因此不能被实例化。
2、如果一个类实现了接口中的部分方法,那么这个类必定是抽象类,因此不能被实例化。