抽象类:
一.抽象方法:
①使用abstaract修饰的方法,没有方法体,只用声明。
(抽象方法即便有返回值声明,也不需要return实际返回对应数据)
②抽象方法必须被子类实现。
③抽象类中的的抽象方法只能使用public访问修饰符。
二.抽象类:
①包含抽象方法的类就是抽象类。
②抽象类不能实例化(不能使用new实例化对象)。
③抽象类中可以没有抽象方法。
④默认无参构造,但不支持使用 new 关键字创建抽象类的对象,只允许在子类构造器中使用 super() 去调用。
⑤默认父类Object。
⑥通常使用上,抽象类中不去写普通方法。
⑦抽象类中的属性一般不封装。
⑧普通类继承抽象类,后抽象类中的抽象方法必须全部实现。
⑨抽象类继承抽象类,不需要重写父类抽象方法,但可以选择性的重写。
三.抽象类在系统中的地位:
(在系统设计初期,约定系统功能)
1.功能名称。
2.实现功能可能需要的参数(名称和类型)。
3.功能实现后的返回情况。
四.普通方法与抽象方法的区别:
1.抽象方法没有方法体。
2.抽象即便有返回值声明,也不需要 return 实际返回对应数据。
3.抽象方法的方法头有 abstract 修饰。
五.抽象类和普通类的异同点:
抽象类就是比普通类,多定义了抽象方法,除了不能直接进行类的实例化操作之外,并没有任何不同。
六.抽象类之间的继承关系
抽象类继承抽象类,不需要重写父类抽象方法,但可以选择性的重写。
七.抽象类的使用要点:
1. 有抽象方法的类只能定义成抽象类。
2. 抽象类不能实例化,不能用new来实例化抽象类。
3. 抽象类可以包含属性、方法、构造方法。但是构造方法不能用来new实例,只能用来被子类调用。
4. 抽象类只能用来被继承。
5. 抽象方法必须被子类实现。
八.例子:
abstract class Animal {
abstract public void shout(); //抽象方法
}
class Dog extends Animal {
//子类必须实现父类的抽象方法,否则编译错误
public void shout() {
System.out.println("汪汪汪!");
}
public void seeDoor(){
System.out.println("看门中....");
}
}//测试抽象类
public class TestAbstractClass {
public static void main(String[] args) {
Dog a = new Dog();
a.shout();
a.seeDoor();
}
}