zoukankan      html  css  js  c++  java
  • 【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;
        }    
    }

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

  • 相关阅读:
    git push时提示"fatal: The current branch master has no..."
    git push时提示"Everything up-to-date"
    图解vim常用命令
    总结下git中一些常用命令
    SVN服务端的版本对比及创建仓库时的注意事项
    bootstrap字体图标不正常显示的原因
    bigdata_Hadoop jps出现process information unavailable提示解决办法
    bigdata_批量机器执行通用脚本
    bigdata_ambari修改hiveserver_metastore链接库(从0.14 升级到1.2.1 )
    bigdata_一篇文看懂Hadoop
  • 原文地址:https://www.cnblogs.com/xiaoka/p/2450737.html
Copyright © 2011-2022 走看看