java abstract关键字使用

抽象类和抽象方法

类的设计应该保证父类和子类能够共享特征。有时将一个父类设计的非常的抽象,以至于他没有具体的实例,这样的类叫做 抽象类

abstract关键字的使用:

  • abstract 抽象的
  • abstract 可以修饰的结构:类、方法
  • abstract 修饰类:抽象类
    • 此类不能够被实例化
    • 抽象类中一定要有构造器,便于子类对象实例化调用。
    • 开发中都会提供抽象类的子类,让子类实例化
/**
 * abstract关键字的使用
 * 1. abstract抽象的
 * 2. abstract可以用来修饰的结构:类、方法
 * */
public class AbstractTest {
    public static void main(String[] args) {
        Student student = new Student("小明", 12);
        student.eat();
        student.walk();
        student.sleep();
    }
}

abstract class Person {
    String name;
    int age;

    public Person(){}
    public Person(String name, int age){
        this.name = name;
        this.age = age;
    }

    public void eat() {
        System.out.println("人吃饭");
    }

    public void walk() {
        System.out.println("人走路");
    }

    public void sleep() {
        System.out.println("人睡觉");
    }
}

class Student extends Person {
    public Student(){}
    public Student(String name, int age) {
        super(name, age);
    }
}

  • abstract修饰方法:抽象方法

    • 抽象方法没有方法体

    • 包含抽象方法的类一定是抽象类

    • 需要继承的子类,实现该方法,或则子类也是抽象方法

    • /**
       * abstract关键字的使用
       * 1. abstract抽象的
       * 2. abstract可以用来修饰的结构:类、方法
       * */
      public class AbstractTest {
          public static void main(String[] args) {
              Student student = new Student("小明", 12);
              student.eat();
              student.walk();
              student.sleep();
          }
      }
      
      abstract class Person {
          String name;
          int age;
      
          public Person(){}
          public Person(String name, int age){
              this.name = name;
              this.age = age;
          }
      	// 这是一个抽象方法
          public abstract void eat();
      
          public void walk() {
              System.out.println("人走路");
          }
      
          public void sleep() {
              System.out.println("人睡觉");
          }
      }
      
      class Student extends Person {
          public Student(){}
          public Student(String name, int age) {
              super(name, age);
          }
      	
          // 子类实现抽象方法
          @Override
          public void eat() {
              System.out.println("学生吃有营养的");
          }
      }
      
      abstract class Student1 extends Person {
          public Student(){}
          public Student(String name, int age) {
              super(name, age);
          }
      }
      
      

抽象类的使用场景

抽象类是用来模型化哪些父类无法确定全部事项,而是由器子类提供具体实现的对象的类。

abstract使用上的注意点

  • abstract 不能用来修饰:属性、构造器等结构
  • 不能用来修饰 私有方法(私有方法是不可以被重写的, 且私有方法不可以被子类直接访问)、静态方法、final的方法、final类
追求吾之所爱
原文地址:https://www.cnblogs.com/rstz/p/14390980.html