抽象类写法:
abstract class A{
public void mothod1(){
System.out.println("hello");
}
public abstract void mothod2();
public abstract void method3();
}
抽象类可以有自己的方法,必须要有抽象方法。
抽象类:
1.抽象类不能被实例化,因为抽象类代表一个类型。只有它的继承类可以被实例化。
2.抽象类有自己的构造方法,它的继承类实例化时会被调用。
3.抽象类可以有实例方法(接口没有)。
4.抽象类不能用final修饰。
抽象方法:
1.必须用abstract修饰,并且没有方法体,无法直接调用。
2.抽象方法不能用private修饰,因为抽象方法必须被子类覆写。
3.抽象方法也能用static修饰,因为抽象方法没有主体,不能通过类名直接调用。
抽象类与抽象方法:
1.如果一个类中含有抽象方法,则这个类必须声明为抽象类。
2.抽象类中可以没有抽象方法,这样做目的是使其不能被实例化。
3.如果一个类继承自一个抽象类,则必须覆写其全部抽象方法,否则这个类为抽象类(这样做无意义,因为不能被实例化)。
抽象类的好处:
1、由于抽象类不能被实例化,最大的好处就是通过方法的覆盖来实现多态的属性。也就是运行期绑定。
2、抽象类将事物的共性的东西提取出来,由子类继承去实现,代码易扩展、易维护。
抽象类的构造器:
public abstract class Car {
Car(){
System.out.println("抽象方法无参构造函数");
}
Car(String a){
System.out.println("抽象有参构造方法");
}
public void mothod1(){
System.out.println(this.getClass());
System.out.println("抽象类的实例方法");
}
public abstract void mothod2();
}
/**
* 自行车
*/
class Bicycle extends Car{
Bicycle(){
System.out.println("子类无参构造函数");
}
@Override
public void mothod2() {//需要覆写抽象方法mothod2
}
}
/**另一个包的测试类**/
public class Test {
public static void main(String[] args) {
Bicycle b = new Bicycle();
b.mothod1();
}
}
结果:
抽象方法无参构造函数
子类无参构造函数
class com.shaolin.service.impl.Bicycle
抽象类的实例方法