Java面向对象6--抽象类

1.abstract

抽象类用于,子类继承父类,父类的方法没有实际意义的时候,但方法必须写方法执行语句,这时就可以使用抽象类。

方法没有具体的执行语句,所以可以用abstract修饰,变为抽象方法,因为没法执行抽象方法,所以该类也得声明为抽象类。

注意事项:

1.当方法为抽象类,则该类也必须为抽象类。并且当子类继承时,必须对抽象类进行实现。

2.抽象类不可实例化,抽象类只能被继承。

作用:子类必须实现父类的抽象方法,相当于对子类进行了一个“规范”

例如:

abstract class Person {
    public abstract void run();
}

2.面向抽象编程

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

使用抽象类去引用子类型,调用者不需要管子类如何实现具体方法。

本质:

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

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

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

注意事项:

1.引用高层类型时,子类中自定义的方法不会被引用,只会引用到父类中的方法。

例如:

public class AbstractTest {
   public static void main(String[] args){
    Person s = new Student();
    //只能引用person中存在的方法
    s.run();
    //s.name();  不存在
   }
}

abstract class  Person{
  public abstract void run ();
}

class  Student extends Person{

  @Override
  public void run() {
    System.out.println("Student.run");
  }

  public void name(){
    System.out.println("student.name");
  }
}

上一篇:什么是 msvcp120.dll 错误消息?.


下一篇:Flask + uWSGI+ Linux 指南及避坑