• 【Java 学习笔记】 抽象类和接口


    抽象类:类的设计应当保证父类包含子类的共同特征,有时为了方便会将父类设计的特别抽象以至于没有具体实例,称之为抽象类。

     -多重继承:需要从多个类中派生出一个子类,这种能力叫做多重继承。

     -单重继承:每个子类都是直接从父类继承的。(Java、C++)

    如:圆、椭圆、正方形等等都可以抽象成为几何图形,几何图形便是一个抽象类。几何图形中含有派生类中的一些共有函数,如计算周长和面积,这些在抽象类中都无法计算,所以设置为抽象方法。这些抽象方法会在派生类中实现。

    抽象类(几何图形)举例:

    public abstract class GeometricObject {
        private String color = "white";
        private boolean filled;
        
        /**初始化函数*/
        protected GeometricObject()
        {
            
        }
        /**初始化函数*/
        protected GeometricObject(String color, boolean filled)
        {
            this.color = color;
            this.filled = filled;
        }
        
        ///////// 虚函数
        /** Abstract method findArea*/
        public abstract double findArea();
        
        /** Abstract method findPerimeter*/
        public abstract double findPerimeter();
        
        ///////// Getter and Setter
        /** Get color*/
        public String getColor() {
            return color;
        }
        /** Set color*/
        public void setColor(String color) {
            this.color = color;
        }
        /** Get filled*/
        public boolean isFilled() {
            return filled;
        }
        /** Set filled*/
        public void setFilled(boolean filled) {
            this.filled = filled;
        }
    
    }

    抽象类派生类举例(圆)举例:

    public class Circle extends GeometricObject{
        private double radius;
        
        /** Construct a circle with default properties*/
        public Circle(double radius)
        {
            this.radius = radius;
        }
        
        /** Constrcut a circle with specified radius, filled, color*/
        public Circle(double radius, String color, boolean filled)
        {
            super(color,filled);
            this.radius = radius;
        }
        
        /////////// 实现的虚拟方法
        @Override
        public double findArea() {
            // TODO Auto-generated method stub
            return radius*radius*Math.PI;
        }
    
        @Override
        public double findPerimeter() {
            // TODO Auto-generated method stub
            return 2*radius*Math.PI;
        }
    
        ////////Getter and Setters
        public double getRadius() {
            return radius;
        }
    
        public void setRadius(double radius) {
            this.radius = radius;
        }    
    }

    接口: 接口是一种与类相似的结构,只包含常量和抽象方法。

  • 相关阅读:
    U132973 双生独白
    Remmarguts' Date(A* 短路)
    P3908 数列之异或
    P1469 找筷子
    P1759 通天之潜水
    P2356 弹珠游戏
    P7072 直播获奖
    P7074 方格取数
    CSP2020二轮游记
    P6205 [USACO06JAN]Dollar Dayz S
  • 原文地址:https://www.cnblogs.com/xiaoka/p/2450737.html
Copyright © 2020-2023  润新知