什么是抽象类,以及抽象类的作用和用法
抽象类自身不能创建对象,但是它的子类可以创建对象。
抽象它的子键字是abstract
在父类中定义的抽象方法,在子类中必须实现(即方法重写)
抽象方法没有方法体。
抽象方法必须定义在抽象类中。
package com.jredu.oopch03;
/**
* 抽象类
* @author Administrator
*
*/
public abstract class Shape2 {
protected int bottom;//底
protected int height;//高
public Shape2(int bottom, int height) {
super();
this.bottom = bottom;
this.height = height;
}
public abstract void perimeter();//抽象方法
public abstract void area();
}
在子类中实现方法:
@Override
public void perimeter() {
// TODO Auto-generated method stub
int perimeter = (bottom*height)*2;
System.out.println("平行四边形的周长是:"+perimeter);
}
@Override
public void area() {
// TODO Auto-generated method stub
int area = bottom*height;
System.out.println("平行四边形的面积是:"+area);
}
抽象类就是为了继承而存在的,如果你定义了一个抽象类,却不去继承它,那么等于白白创建了这个抽象类,因为你不能用它来做任何事情。对于一个父类,如果它的某个方法在父类中实现出来没有任何意义,必须根据子类的实际需求来进行不同的实现,那么就可以将这个方法声明为abstract方法,此时这个类也就成为abstract类了。
包含抽象方法的类称为抽象类,但并不意味着抽象类中只能有抽象方法,它和普通类一样,同样可以拥有成员变量和普通的成员方法。注意,抽象类和普通类的主要有三点区别:
1)抽象方法必须为public或者protected(因为如果为private,则不能被子类继承,子类便无法实现该方法),缺省情况下默认为public。
2)抽象类不能用来创建对象;
3)如果一个类继承于一个抽象类,则子类必须实现父类的抽象方法。如果子类没有实现父类的抽象方法,则必须将子类也定义为为abstract类。
在其他方面,抽象类和普通的类并没有区别。