abstract class Abs{
private int i;
public abstract void f();
}
public class TestABsClass {
public static void main(String[] args) {
System.out.println("抽象类!");
}
}
总结:
如果f()方法没有方法体,class类前面必须加abstract修饰, 如果f()方法
含有方法体,class前面可以加也可以不加abstract修饰,因为一个抽象类中 是可以没有抽象方法的.少见.
f()方法 如果没有方法题,必须加abstract修饰为 抽象方法
abstract class ABS1{
abstract public void f();
}
class S extends ABS1{
public void f(){
System.out.println("bbbbb");
}
}
public class TestABsClass_2 {
public static void main(String[] args) {
//ABS1 a =new ABS1(); error
ABS1 aa =new S(); //定义一个抽象类的引用
aa.f();
}
}
从本程序中 可以看出,抽象类不能实例话. 但是可以定义一个抽象类的引用
可以把一个子类对象的地址付给抽象类的引用,然后通过抽象类的引用调用子类从父类继承过来的
方法:
抽象类实现多态
A aa2 =null; //可以定义一个抽象类的引用
aa2=new B(); //将子类对象地址赋给抽象类的引用
aa2.f(); //用抽象类的方法访问子类的方法 .这就是多态