面向对象特征-抽象

Java中,除了类,还有抽象类接口

抽象方法必须在一个抽象类里面

  1. 当我们定义了一个抽象类,这个抽象类中可以有哪些结构?

    • 属性、成员方法、构造器、抽象方法、常量
  2. 抽象类中能不能没有抽象方法?

    • 抽象类中可以没有抽象方法
  3. 抽象类不能干什么?

    • 抽象类是不能被实例化的、不能创建对象的
  4. 抽象类构造器存在的意义?

    • 为了约定子类的构造器必须和父类要匹配
  5. 一个类如果继承了一个抽象类,就必须重写这个抽象类的所有的抽象方法

abstract关键字

  • 它能能修饰什么?类、方法。
  • 抽象方法不能用private修饰
  • 抽象方法不能用final修饰(用final修饰的方法 不允许重写)
  • 抽象类能不能用final修饰,(用final修饰的类,是不予许被继承的)

总结

1、抽象方法必须是public或者protected,因为如果是private,不能被子类继承
子类便无法实现该方法,默认情况下是可以的(默认情况其实就是public

2、抽象类是不能被直接实例化的,它需要依靠子类采用向上转型的方式处理

3、抽象类必须有子类,使用extends继承,一个类只能继承一个类

4、子类(如果不是抽象类)则必须重写抽象类中的所有抽象方法
(如果子类没有实现父类的抽象方法,必须将子类也定义为abstract


抽象方法

抽象方法没有大括号,没有方法体
抽象方法存在的意义是什么?根本意义,约定,自定义的规则


接口

接口是什么? 比抽象类更高级的抽象 (抽象,比类更高级的抽象)
如何声明? 使用interface关键字 public interface Ch02

JDK 1.7之前,接口中只能定义抽象方法,不能有实例对象,不能有属性,不能有方法,只能有抽象方法 (可以放静态常量静态方法
JDK 8及以后,接口中只能定义抽象方法,不能有属性,可以有默认方法和静态方法,静态常量。
JDK7--JDK8:默认方法、静态方法

接口中结构的特点

接口中的抽象方法默认是 public abstract(推荐省略掉)
接口中的常量默认是什么样的? public static final(推荐省略掉)

接口中的结构必须是public

接口可以被实现,所以叫做实现类
比如说A类 implements 接口,那我们就说A是这个接口的实现类
如果一个类实现了一个接口 它就需要重写接口中的所有抽象方法

另外,实现接口是可以多实现的继承只能单继承
开发中,如果一件事情可以通过继承和实现接口来解决问题,接口解决


多态的前提条件

  1. 继承、实现
  2. 重写方法
  3. 父类--子类、接口--实现类
最后修改:2023 年 01 月 09 日
如果觉得我的文章对你有用,请随意赞赏