抽象类,抽象方法的定义和调用

第一步: 定义父类:Shape

package com.xjc;

/*1,定义一个图形(Shape)类作为诸如三角形▲、菱形◆、矩形▋等图形的父类,在该父类中定义calcPerimeter()抽象方法,该方法用于计算图形的周长(Shape是抽象类)。

2,定义两个子类,重写父类的calcPerimeter()方法。*/
public abstract class Shape {
	private String type;

	public String getType() {
		return type;
	}

	public void setType(String type) {
		this.type = type;
	}

	// 用abstract关键字定义一个抽象类calcPerimeter   抽象类是没有方法体的,所以没有{}
	public abstract double calcPerimeter();

}

第二步: 定义第一个子类:Circle

package com.xjc;

/*1,定义一个图形(Shape)类作为诸如三角形▲、菱形◆、矩形▋等图形的父类,在该父类中定义calcPerimeter()抽象方法,该方法用于计算图形的周长(Shape是抽象类)。

2,定义两个子类,重写父类的calcPerimeter()方法。*/
public class Circle extends Shape {
	private double r;

	public Circle() {
		super();
	}

	public Circle(Double r) {
		super();
		this.r = r;
	}

	public double getR() {
		return r;
	}

	public void setR(Double r) {
		this.r = r;
	}

	//重写父类shape中的calcPerimeter方法    子类和父类中的同名同参同返回值的方法,这叫方法重写
	@Override
	public double calcPerimeter() {
		// TODO Auto-generated method stub
		return 2 * r * Math.PI;
	}

}

第三步: 定义第二个子类:Rectangle

package com.xjc;

/*1,定义一个图形(Shape)类作为诸如三角形▲、菱形◆、矩形▋等图形的父类,在该父类中定义calcPerimeter()抽象方法,该方法用于计算图形的周长(Shape是抽象类)。

2,定义两个子类,重写父类的calcPerimeter()方法。*/
public class Rectangle extends Shape {
	private double c;
	private double k;

	public Rectangle() {
		super();
	}

	public Rectangle(Double c, Double k) {
		super();
		this.c = c;
		this.k = k;
	}

	public double getC() {
		return c;
	}

	public void setC(Double c) {
		this.c = c;
	}

	public double getK() {
		return k;
	}

	public void setK(Double k) {
		this.k = k;
	}

	//重写父类shape中的calcPerimeter方法    子类和父类中的同名同参同返回值的方法,这叫方法重写
	@Override
	public double calcPerimeter() {
		// TODO Auto-generated method stub
		return (c + k) * 2;
	}

}

第三步: 定义测试类:Shapetext

package com.xjc;

import java.util.Scanner;

/*1,定义一个图形(Shape)类作为诸如三角形▲、菱形◆、矩形▋等图形的父类,在该父类中定义calcPerimeter()抽象方法,该方法用于计算图形的周长(Shape是抽象类)。

2,定义两个子类,重写父类的calcPerimeter()方法。*/
public class Shapetext {

	public static void main(String[] args) {

		Scanner inputScanner = new Scanner(System.in);

		System.out.println("请输入圆的半径:");
		double r = inputScanner.nextDouble();
		// 通过有参构造方法给对象yuan的属性赋值
		Circle yuan = new Circle(r);

		System.out.println("请输入矩形的长和宽(两者间用一个空格隔开):");
		double c = inputScanner.nextDouble();
		double k = inputScanner.nextDouble();
		// 通过有参构造方法给对象juxing的属性赋值
		Rectangle juXing = new Rectangle(c, k);

		// 调用两个对象的方法并输出返回值
		System.out.println(yuan.calcPerimeter());
		System.out.println(juXing.calcPerimeter());
	}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值