Java抽象类分析

来源:互联网 发布:云平台软件 编辑:程序博客网 时间:2024/04/27 17:51

1、如果父类中含有抽象方法,留给子类去实现,则父类必须显式的被定义成一个abstract类,否则

子类继承父类并实现抽象方法的时候,发生编译报错

例子:

public class demo{public static void main(String[] args){SubClass sc = new SubClass();sc.print();}}class SuperClass{abstract void print();}class SubClass extends SuperClass{void print(){System.out.println("print");}}



2、一个非抽象类继承了一个含有抽象方法的抽象类。则它必须要覆盖(或实现)父类中的抽象方法,否则编译报错。

public class demo{public static void main(String[] args){SubClass sc = new SubClass();sc.print();}}abstract class SuperClass{abstract void print();}class SubClass extends SuperClass{// void print(){// System.out.println("print");//}}




总结:

1) Abstract(抽象)可以修饰类、方法 

如果将一个类声明为abstract,此类不能生成对象,只能被继承使用。 

Abstract类的设计是将子类的共性最大限度的抽取出来,以提高程序的统一性。 


2) 一个类中包含有抽象方法必须声明为抽象类;  
如果一个类中有一个抽象方法,那么这个类一定为一个抽象类。 
反之,如果一个类为抽象类,那么其中可能有非抽象的方法。 

3) 抽象类不能实例化,但仍可以声明;  
Abstract类可以作为编译时类型,但不能作为运行时类型。 

4) 子类继承抽象类必须实现其中抽象方法 
当abstract用于修饰方法时,此时该方法为抽象方法,此时方法不需要实现,实现留给子类覆盖,子类覆盖该方法之后方法才能够生效。 
注意比较: 
private void print(){};此语句表示方法的空实现。 
Abstract void print(); 此语句表示方法的抽象,无实现。
原创粉丝点击