zoukankan      html  css  js  c++  java
  • java 基础(抽象类)

         在某些情况下,父类只知道子类该实现什么样的方法,而不知道方法的具体实现,就可以定义抽象类,例如:父类shape,子类:circle;父类提供了计算周长的方法,但子类实现周长计算的方法是不一样的,比如,圆形,三角形;抽象类只提供方法签名,没有实现(由其子类实现)。

         类和方法都是由abstract修饰。

    package com.creditharmony.adapter.testCase.test;
    
    /*
     * 抽象类
     * */
    public abstract class ShapeTest {
    	{
    		System.out.println("这是抽象类里的初始化块");
    	}   
    	
    	private String color;
    	// 计算周长的抽象方法
    	public abstract double caperimagter();
    	// 返回形状的抽象方法
    	public abstract String getType();
    	// 定义构造器,该构造器不是用来生成对象,而是用来被对象调用
    	public ShapeTest(){};
    	// 再来一个
    	public  ShapeTest(String color) {
    		System.out.println("执行形状的构造器……,color:"+color);
    		this.setColor(color);
    	}
    	public String getColor() {
    		return color;
    	}
    	public void setColor(String color) {
    		this.color = color;
    	}
    }
    

     三角形类:

    package com.creditharmony.adapter.testCase.test;
    
    public class TriangleShape extends ShapeTest {
    
    	// 定义三角形的三条边
    	private double a;
    	private double b;
    	private double c;
    
    	@Override
    	public double caperimagter() {
    
    		return a + b + c;
    	}
    
    	@Override
    	public String getType() {
    		// 返回形状
    		return "三角形";
    	}
    
    	public TriangleShape(String color, double a, double b, double c) {
    		super(color);
    		setSides(a, b, c);
    	}
    
    	private void setSides(double a, double b, double c) {
    		if (a > b + c || b > a + c || c > a + b) {
    			System.out.println("三角形的两边之和必大于第三边");
    			return;
    		}
    		this.a = a;
    		this.b = b;
    		this.c = c;
    	}
    
    }
    

     圆形:

    package com.creditharmony.adapter.testCase.test;
    
    /*
     * 圆形
     * */
    public class CircleShape extends ShapeTest {
    
    	private double radius;
    
    	public CircleShape(String color,double radius) {
    		 super(color);
    		 this.radius=radius;
    	}
    
    	@Override
    	public double caperimagter() {
    		// 周长
    		return 2*Math.PI*radius;
    	}
    
    	@Override
    	public String getType() {
    		return getColor()+ "圆形";
    	}
    
    	public void setRadius(double radius) {
    		this.radius = radius;
    	}
    	
    	public static void main(String[] args) {
    		ShapeTest s1=new TriangleShape("红色", 12.2, 12, 12);
    		ShapeTest s2=new CircleShape("黄色", 5);
    		System.out.println(s1.getType());
    		System.out.println(s1.caperimagter());
    		System.out.println(s2.getType());
    		System.out.println(s2.caperimagter());
    	}
    
    }
    
  • 相关阅读:
    Qt判断文件夹是否存在并新建文件夹
    QFileDialog的使用
    C++11 std::chrono库详解
    disconnected no supported authentication methods available(server sent: publickey)
    connect函数的第5参数Qt::ConnectionType
    在C++ 中检查一个文件是否存在的几种方法
    win10打开便签
    1024. Palindromic Number (25)
    1023. Have Fun with Numbers (20)
    1021. Deepest Root (25)
  • 原文地址:https://www.cnblogs.com/hoge/p/6340883.html
Copyright © 2011-2022 走看看