zoukankan      html  css  js  c++  java
  • 抽象类(二):

    抽象类的作用:模板

    1、从语义的角度看,抽象类是从多个具体类中抽象出来的父类,具有更高层次的抽象

    2、从多个具有相同特征的类中抽象出一个抽象类,以这个抽象类作为其子类的模板,从而避免了其子类设计的随意性

    3、抽象类体现的就是一种模板模式的设计,抽象类作为多个子类的通用模板,子类在抽象类的基础上进行扩展、改造,但子类从整体上会大致保留抽象类的行为方式

    下面代码展示的是另一种抽象类的模板使用样式:

    abstract class SpeedMeter{
    	//-转速
    	private double trunRate;
    
    	public SpeedMeter(){
    		
    	}
    
    	//-定义一个获取半径的 抽象方法
    	public abstract double getRadius();
    
    	public void setTrunRate(double trunRate){
    		this.trunRate=trunRate;
    	}
    
    	//-定义一个获取速度的方法,调用 还未实现的 获取半径的抽象方法
    	public double getSpeed(){
    		return Math.PI*2*getRadius()*trunRate;
    	}
    }
    
    public class CarSpeedMeter extends SpeedMeter{
    	
    	//-实现父类的抽象方法 返回半径
    	public double getRadius(){
    		return 0.25;
    	}
    	
    	public static void main(String[] args){
    		CarSpeedMeter car=new CarSpeedMeter();
    		car.setTrunRate(25);
    		System.out.println(car.getSpeed());
    	}
    }
    

     运行结果:

    如上代码中:SpeedMeter 类里提供了获取速度表的通用方法,但是具体实现细节则推迟到了其子类 CarSpeedMeter 中来实现,这也是一种典型的模板模式

    总结:

    模板模式在面向对象的软件中很常用,其原理简单,实现也简单,其一些简单规则如下:

    1、抽象父类可以只定义需要使用的某些方法,把不能实现的部分抽象成抽象方法留给子类去实现

    2、父类中可能包含需要调用其他系列方法的方法,这些被调用的方法既可以被父类实现,也可以通过抽象方法的方式由子类来实现

  • 相关阅读:
    SpringMVC ModelAndView方法与模板传参接收不到问题
    DB2单个DB重启
    DB2 数据库绑定用户授权命令
    [转]sublime配置全攻略
    [转]Sublime text2安装php beautifier
    [转]php及xdebug使用小结
    [转]Pear、PHPUnit安装
    [转]WIN下成功安装PEAR
    [转]PHP单元测试利器:PHPUNIT初探
    [转]sublime使用xdebug调试php
  • 原文地址:https://www.cnblogs.com/baby-zhude/p/8137298.html
Copyright © 2011-2022 走看看