抽象方法 和 抽象类

抽象类 和 抽象方法

1、抽象类 ( Abstract Class )

关键字:abstract

  • 从形式上看抽象类是 由 abstract 修饰的 Java 类

  • 专门为继承体系顶端设计的类通常设计为抽象类

  • 抽象类 不能被实例化

    • 不能通过 new 关键字直接创建抽象类的类型的实例

    • 但是可以创建其子类的实例

  • 抽象类中 可以有 字段方法构造方法代码块内部类

特点:

1、抽象类 可以继承 抽象类 具体类可以继承抽象类 抽象类可以继承 具体类 2、抽象方法是 由 abstract 修饰的、没有方法体 的方法 3、有抽象方法的类必须是抽象类

4、如果 具体类 继承了 抽象类,则 必须实现抽象类中的所有方法

2、抽象方法

  • 如果某个方法在声明时无法确定其实现细节,则可以省略其实现过程,直接以分号结束

  • 如果某个方法省略了实现过程连 { } 都省略了 此时需要为该方法 增加关键字 abstract 表示该方法时抽象的

  • 抽象方法就是 由 abstract 修饰的 没有方法体的方法

含有抽象方法的类必须就是抽象类

但是有抽象类不一定有抽象方法

3、示例

Human 类

 package abstractclass;
 
 import java.util.Objects;
 
 /** 1、抽象类 与 具体类 的区别是 抽象类不可以实例化
  * 2、抽象类 不一定要有抽象方法 为了让某个类不能被实例化也可以将该类设计为 抽象类
  *
  * */
 
 public abstract class Human extends Object { // 抽象类 可以继承实体类
     protected String name;
 
     static {
         System.out.println("Human:类初始化块");
    }
    {
         System.out.println("Human:实例初始化块");
    }
 
     public Human() {
         System.out.println("Human()");
    }
     public Human(String name) {
         this.name = name;
         System.out.println("Human(String)");
    }
     public void show() {
         System.out.println(this.name);
    }
 
     public static void main(String[] args) {
         Human h = null;
         // h = new Human(); // 【错误】 Human 类是抽象的 无法实例化
    }
 }
 

 

Sinaean 类 有一个抽象方法 eat

 package abstractclass;
 
 
 /**
  * 1、抽象类 可以继承 抽象类 具体类可以继承抽象类 抽象类可以继承 具体类
  * 2、抽象方法是 由 abstract 修饰的、没有方法体 的方法
  * 3、有抽象方法的类必须是抽象类
  * */
 
 public abstract class Sinaean extends Human {
     // 声明一个抽象方法
     public abstract void eat(String foodName); // 没有方法体、由 abstract 修饰符修饰
 
 }
 

Han 类

 package abstractclass;
 /**
  * 1、如果 具体类 继承了 抽象类,则 必须实现抽象类中的所有方法
  *
  *
  * */
 public class Han extends Sinaean {
 
 
     @Override
     public void eat(String foodName) { // 如果有方法体就一定不能有 abstract 修饰符
         System.out.println("在中国汉族人基本都使用筷子吃" + foodName );
    }
 
     public static void main(String[] args) {
         Han h = new Han();
         h.name = "火锅";
         h.eat("火锅");
    }
 }
 

 

猜你喜欢

转载自www.cnblogs.com/zachyoung/p/12960360.html