• java中的抽象类


                                                                                     java中的抽象类

    abstract class PlaneGraphics //平面类,抽象类
    {
        private String shape; //形状
       //构造方法,有参数
        public PlaneGraphics(String shape)
        {
            this.shape=shape;
        }
     //无参数,构造方法
        public PlaneGraphics()
        {
            this("未知图形");
        }
        //抽象方法
        public abstract double area();
        //非抽象方法,显示面积
        public void print()
        {
            System.out.println(this.shape+"面积为:"+this.area());
        }
        
        }
    //长方形类,继承平面类
    class Rectangle extends PlaneGraphics
    {
        protected double length; //长
        protected double width; //宽
        //有参数的构造方法
        public Rectangle(double length,double width)
        {
            this.length=length;
            this.width=width;
        }
        //正方形构造方法
        public Rectangle(double width)
        {
            super("正方形");
            this.width=width;
            this.length=width;
            
        }
        //无参数构造方法
        public Rectangle()
        {
            
        }
        //计算长方形的构造方法,实现父类的抽象方法
        public double area()
        {
            return width*length;
        }
        
        }
    //设计椭圆类,继承平面类
    class Eclipse extends PlaneGraphics
    {
        protected double radius_a;  //a轴半径
        protected double radius_b;
        //构造方法
        public Eclipse(double radius_a,double radius_b)
        {
            this.radius_a=radius_a;
            this.radius_b=radius_b;
        }
        //圆的构造方法
        public Eclipse(double radius_a)
        {
            super("圆形:");
            this.radius_a=radius_a;
            this.radius_b=radius_a;
                    
        }
        //无参数构造方法
        public Eclipse()
        {
            
        }
        //计算椭圆的面积
        public double area()
        {
            return Math.PI*radius_a*radius_b;
        }
        }

    public class PlaneGraphics_ex {
        public static void main(String[]args)
        {
            PlaneGraphics g=new Rectangle(10,20);
            g.print();
            g=new Rectangle(10); //正方形
            g.print();
            g=new Rectangle(); //未知图形方法
            g.print();
            g=new Eclipse(10,20); //椭圆
            g.print();
            g=new Eclipse(10); //圆
            g.print();
            g=new Eclipse(); //圆形形状未知
            g.print();
        }

    }

    1.抽象类中只包括抽象方法,方法的声明。而方法的具体的实现是由其子类实现的。

    2.抽象类不能实例化,不能基于抽象类来创建新的对象。

    3.抽象类中可以包含成员变量和成员方法,但是抽象方法只能出现抽象类,不能出现在其他的类中。

    编程是一门艺术,要爱就要深爱。
  • 相关阅读:
    【html、CSS、javascript-9】jquery-选择器及过滤器
    【python之路40】Python 作用域
    H5缓存
    解决网络不可用--Using_Service_Workers
    跨域请求CORS
    基于node的websocket示例
    test
    函数节流
    ES6 promise
    web前端免费资源集
  • 原文地址:https://www.cnblogs.com/pwhit/p/4941157.html
Copyright © 2020-2023  润新知