abstract

抽象方法
1.由abstract修饰
2.只有方法的定义,没有方法的实现(大括号都没有)
抽象类
1. 由abstract修饰
2.包含抽象方法的类必须是抽象类,不包含抽象方法的类也可以声明为抽象类
3.抽象类不能被实例化
4.抽象类是需要被继承的,子类:
4.1 重写所有抽象方法–常用
4.2 也声明为抽象类–不常用
5.抽象类的意义:
5.1 包含公共的属性和行为,被子类所共享–代码重用
5.2 为所有子类提供一种统一的类型–向上造型
5.3包含抽象方法,为子类提供一个统一的入口
子类有不同的实现

找一组图形中的最大面积

public class ShapeTest {
	public static void main(String[] args) {
		//new Shape();//编译错误,抽象类不能被实例化
		
		Shape[] shapes=new Shape[4];//创建shape数组对象
		shapes[0]=new Square(1);
		shapes[1]=new Square(2);//大
		shapes[2]=new Circle(1);
		shapes[3]=new Circle(2);//大
		maxArea(shapes);
	}
	
	public static void maxArea(Shape[] shapes){//找最大面积
		double max=shapes[0].area();
		int maxIndex=0;
		for(int i=1;i<shapes.length;i++){
			double area=shapes[i].area();
			if(area>max){
				max=area;
				maxIndex=i;
			}
		}
		System.out.println("最大面积:"+max+",所在下标为:"+maxIndex);
	}

}

abstract class Shape{//抽象类
	protected double c;//周长
	public abstract  double area();//抽象方法
}
class Square extends Shape{
	public Square(double c){
		this.c=c;
	}
	public double area(){//重写抽象方法
		return 0.0625*c*c;
	}
}
class Circle extends Shape{
	public Circle(double c){
		this.c=c;
	}
	public double area(){
		return 0.0796*c*c;
	}
}

  • 7
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值