抽象类

package fang_abstract;

public abstract class Shape {
	{
		System.out.println("执行Shape的初始化块……");
	}
	private String color;
	public abstract double calPerimeter();
	public abstract String getType();
	public Shape() {}
	public Shape(String color) {
		System.out.println("执行Shape的构造器……");
		this.color=color;
	}
	public void setColor(String color)
	{
		this.color = color;
	}
	public String getColor()
	{
		return this.color;
	}
	
}

Shape抽象类包含了初始化块和构造器,这些都不是在创建Shape对象时被调用的,而是在创建其子类的实例时被调用。

抽象类的子类:

package fang_abstract;

public class Triangle extends Shape{
	private double a;
	private double b;
	private double c;
	public Triangle(String color,double a,double b,double c) {
		super(color);
		this.setSides(a,b,c);
	}
	public 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;
	}
	public double calPerimeter() {
		return a+b+c;
	}
	public String getType() {
		return "三角形";
	}
	
}
package fang_abstract;

public class Circle extends Shape{
	private double radius;
	public Circle(String color,double radius) {
		super(color);
		this.radius=radius;
	}
	
	public void setRadius(double radius) {
		this.radius = radius;
	}
	
	public double calPerimeter() {
		return 2*Math.PI*radius;
	}
	
	public String getType() {
		return getColor()+"圆形";
	}
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Shape s1 = new Triangle("黑色",3,4,5);
		Shape s2 = new Circle("黄色",3);
		System.out.println(s1.getType());
		System.out.println(s1.calPerimeter());
		System.out.println(s2.getType());
		System.out.println(s2.calPerimeter());
	}

}
运行结果:
执行Shape的初始化块……
执行Shape的构造器……
执行Shape的初始化块……
执行Shape的构造器……
三角形
12.0
黄色圆形
18.84955592153876
抽象类不能创建实例,只能当成父类被继承。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值