package com.test;
//抽象类中的方法可以是普通方法和抽象方法而接口必须是抽象方法
abstract class Graph{
public abstract Double getArea();
}
class Circle extends Graph{
private Integer r;
Circle(Integer r){
this.r=r;
}
public Double getArea(){
return Math.PI*r*r;
}
}
class Triangle extends Graph{
private Integer a;
private Integer b;
private Integer c;
Triangle(Integer a,Integer b,Integer c){
this.a=a;
this.b=b;
this.c=c;
}
public Double getArea(){
Double p=(a+b+c)/2.0;
return Math.sqrt(p*(p-a)*(p-b)*(p-c));
}
}
public class M1001 {
public static void main(String[] agrs){
Circle c=new Circle(1);
Triangle t=new Triangle(3,4,5);
System.out.println(c.getArea());
System.out.println(t.getArea());
}
}
抽象类特点:
- 里面可以是普通方法也可以是抽象方法
- 抽象方法的类型可以是public、protected但不能是final、static(因为子类需要重写父类的抽象方法)
- 抽象方法没有方法体
- 抽象方法不能实例化对象记不能用new产生对象