抽象类

   通常在编程语句中用 abstract 修饰的类是抽象类。在C++中,含有纯虚拟函数的类称为抽象类,它不能生成对象;在java中,含有抽象方法的类称为抽象类,同样不能生成对象。

    程序见证一切:

1)抽象类

public  abstract class Abstract//定义一个抽象类
{
        public abstract void printName();//只有抽象类才有权利拥有抽象方法;
        
        public abstract int getArea();
        
        public void printAge()//抽象类也可以拥有具体的方法;
        {
            System.out.println(23);
        }
    
}
2)子类,继承于抽象类

public class AbstractTest extends Abstract
{
    
    int  width ;
    
    int height ;
    
    public AbstractTest(int width,int height)//自定义构造方法,含两个整型的参数
    {
        this.width = width;//第一个width是参数,第二个是成员变量;
        this.height = height;
    }
    
    public void printName()//继承了抽象类的类,它必须实现抽象类的抽象方法;具体方法可以不实现;
    {
        System.out.println("继承后的抽象方法");
    }
    public int getArea()
    {
         int area = width*height;
         return area ;
    }
    
    public static void main(String[] args)
    {
        //Abstract a = new Abstract(); 不允许的操作,因为抽象类如果重写抽象方法的话,那么该抽象类无法被实例化;Cannot instantiate the type Abstract
        /*
         * 修改了原抽象类的抽象方法为不抽象,可以被实例化;
         */
        Abstract a = new Abstract()
        {
            public void printName()
            {
                System.out.println("已经不是抽象方法了");
            }

            public int getArea()
            {
                return 0;
            }
        };
        a.printAge();
        /*
         * 它的子类可以实例化;
         */
        AbstractTest at = new AbstractTest(4,5);
        
        at.printName();
        
        System.out.println(at.getArea());
    }
}


程序输出的结果:

23
继承后的抽象方法
20


原文地址:https://www.cnblogs.com/MedivhQ/p/3801417.html