不过是在Java中还是在C/C++中,都有抽象类的概念。不过关键字不同,Java中抽象类的关键字是abstract。同样的道理,既然有抽象类,那么就有抽象的方法(有申明无实现)。抽象方法的关键字也是abstract。抽象类不可以实例化,用来生成子类。抽象方法一定只能在抽象类中出项,但是抽象类中不一定有抽象方法。抽象类的子类要对抽象类中每一个抽象方法进行实现,要不然子类依然是抽象类,要加abstract。
public class Test
{
public static void main(String[] args)
{
MultiAngle s = new TriAngle(2,5);
int area = s.computeArea();
System.out.println(area);
System.out.println("---------------");
s = new RectAngle(2,5);
area = s.computeArea();
System.out.println(area);
System.exit(0);
}
}
abstract class MultiAngle
{
abstract int computeArea();
}
class TriAngle extends MultiAngle
{
int hight,wight;
TriAngle(int hight,int wight)
{
this.hight = hight;//this用于表示对象本身,this。hight表示对类成员中的hight的引用
this.wight = wight;
}
int computeArea()
{
return hight*wight/2;
}
}
class RectAngle extends MultiAngle
{
int hight,wight;
RectAngle(int hight,int wight)
{
this.hight = hight;//this用于表示对象本身,this。hight表示对类成员中的hight的引用
this.wight = wight;
}
int computeArea()
{
return hight*wight;
}
}
运行结果为:
5
---------------
10