• 抽象类


    public class Hello {
        public static void main(String[] args) {
            Person  p = new Student();
            p.run();//Student is running
            Person.run2();
            p.run1();
        }
    }
      
    // 抽象类中可以存在实例方法,静态方法,实例字段,他可以存在已经实现的方法然后被子类继承
    // 他的抽象方法有点像是接口中的未实现方法,相当于一个约定,约定了他的子类必须实现抽象类中的抽象方法
    // 抽象类和接口的不同之处在于一个类可以实现多个接口,但是抽象类只能是单继承的
    // 抽象类中可以有实例成员,静态成员,子类继承他会拥有这些成员,但是接口不存在实例成员和静态成员
    // 接口只是一个约定而已
    abstract class Person {
          public abstract void run();
          public String name;
          public void run1() {
              System.out.println("run1");
          }      
          public static void run2() {
              System.out.println("run2");
          }
    }
    
    class Student extends Person{
          public void run() {
              System.out.println("Student is running");
          }
    }
     

    类中只要有抽象放啊(abstract)方法就类也就是抽象方法,这个类也必须是抽象类。抽象类不可以被实例化。

    抽象类会强迫子类去实现父类(抽象类)中的方法,因此,抽象方法实际上相当于定义了“规范”。

    这种尽量引用高层类型,避免引用实际子类型的方式,称之为面向抽象编程。

    面向抽象编程的本质就是:

    • 上层代码只定义规范(例如:abstract class Person);

    • 不需要子类就可以实现业务逻辑(正常编译);

    • 具体的业务逻辑由不同的子类实现,调用者并不关心。

  • 相关阅读:
    java——ArrayList中remove()方法疑问总结
    java——ArrayList中contains()方法中的疑问
    C语言中signed和unsigned理解
    IO流——常用IO流详解
    Lost's revenge
    Searching the String
    DNA repair
    Ring
    Wireless Password
    Censored!
  • 原文地址:https://www.cnblogs.com/-alvin/p/12971751.html
Copyright © 2020-2023  润新知