moc 发表于 2018-12-22 10:48:44

Java-008抽象类

本帖最后由 moc 于 2018-12-22 10:48 编辑

1、抽象类的概念
       在自上而下的继承层次结构中,位于上层的类更具有通用性,甚至可能更加抽象。从某种角度看,祖先类更加通用,它只包含一些最基本的成员,人们只将它作为派生其他类的基类,而不会用来创建对象。甚至,你可以只给出方法的定义而不实现,由子类根据具体需求来具体实现。
抽象方法: 只给出方法定义而不具体实现的方法,抽象方法是没有方法体。
抽象类:   包含一个或多个抽象方法的类。类即使不包含抽象方法,也可以被声明为抽象类,防止被实例化。
关键字:     abstract
import static java.lang.System.*;
public final class Demo{
    public static void main(String[] args) {
      Teacher t = new Teacher();
      t.setName("小明");
      t.work();
      
      Driver d = new Driver();
      d.setName("小陈");
      d.work();
    }
}
// 定义一个抽象类
abstract class People{
    private String name;// 实例变量
   
    // 共有的 setter 和 getter 方法
    public void setName(String name){
      this.name = name;
    }
    public String getName(){
      return this.name;
    }
   
    // 抽象方法
    public abstract void work();
}
class Teacher extends People{
    // 必须实现该方法
    public void work(){
      out.println("我的名字叫" + this.getName() + ",我正在讲课,请大家不要东张西望...");
    }
}
class Driver extends People{
    // 必须实现该方法
    public void work(){
      out.println("我的名字叫" + this.getName() + ",我正在开车,不能接听电话...");
    }
}2、抽象类的总结
注意:
        1.抽象类不能被实例化,如果被实例化,就会报错,编译无法通过。只有抽象类的非抽象子类可以创建对象。
        2.抽象类中不一定包含抽象方法,但是有抽象方法的类必定是抽象类。
        3.抽象类中的抽象方法只是声明,不包含方法体,就是不给出方法的具体实现也就是方法的具体功能。
        4.构造方法,类方法(用static修饰的方法)不能声明为抽象方法。
        5.抽象类的子类必须给出抽象类中的抽象方法的具体实现,除非该子类也是抽象类。
抽象类的成员特点:
A:成员变量
        有变量,有常量
B:构造方法
        有构造方法
C:成员方法
        有抽象,有非抽象
abstract不能和哪些关键字共存:
        a:final        ==> 冲突
        b:private   ==> 冲突
        c:static      ==> 无意义

zwhe 发表于 2020-6-5 11:12:37

{:9_235:}
页: [1]
查看完整版本: Java-008抽象类