抽象类就是拥有抽象方法的类,和普通类的区别仅在于多了抽象方法,用abstract修饰
抽象方法就是没有方法体**的类,也是用abstract修饰的
抽象类使用原则:
(1)抽象方法必须为public或者protected(因为如果为private,则不能被子类继承,子类便无法实现该方法),缺省情况下默认为public;
(2)抽象类不能直接实例化,需要依靠子类采用向上转型的方式处理; (很重要)
(3)抽象类必须有子类,使用extends继承,一个子类只能继承一个抽象类;
(4)子类(如果不是抽象类)则必须覆写抽象类之中的全部抽象方法(如果子类没有实现父类的抽象方法,则子类也是一个抽象类),普通方法可以不必实现;
抽象类的构建:
abstract class Fu{ //抽象类
public void hello(){ //普通方法
System.out.println("hello world");
}
abstract public void world(); //抽象类
}
抽象类的使用:
class Zi extends Fu{ //Zi类继承抽象类Fu类
public void world(){ //重写Fu类中的抽象方法,切记有几个抽象方法重写几个
System.out.println("nihao shijie");
}
}
public class Test {
public static void main(String[] args) {
// TODO code application logic here
Fu fu = new Zi(); //向上转型
fu.hello();
fu.world();
}
}
结果:
run:
hello world
nihao shijie
注意:
(1)抽象类不能被final声明,因为抽象类必须有子类,final定义的类不能有子类