Java|学习|abstract ,接口 Interface , Object

1.abstract

1.1 abstract

abstract 是修饰符,表示抽象的,用来修饰抽象类和抽象方法。

abstract 修饰的类是抽象类,抽象类不能创建对象,主要用于被子类继承。

abstract 修饰的方法是抽象方法,该方法没有方法体,只定义功能,不提供实现,用于让不同的子类去实现(覆写)。

1.2 抽象类中是否有构造方法

子类创建对象时需要调用父类的构造方法,因此抽象类作为父类需要有构造方法。

1.3 抽象方法和抽象类的关系

抽象方法必须在抽象类中。

抽象类中可以没有抽象方法。

一个类中只要有抽象方法,那么这个类就是抽象类。

1.4 abstract 和 final

这两个修饰符互斥,不可以同时出现。

1.5 继承抽象类

子类如果要继承抽象类,就必须实现所有的抽象方法,否则该子类也要用 abstract 修饰,成为一个抽象类。

1.6 abstract 中的多态

抽象类的本质就是要让子类通过覆写父类方法实现功能,满足覆写方法的条件,因此可以使用多态。

2.接口 Interface

2.1 Interface

接口不能创建对象,没有构造方法,但是可以发生多态。

接口和接口之间是继承关系,并且可以多继承。

如果接口和抽象类都能实现某个功能的时候,优先使用接口。因为类和接口之间是多实现的关系,如果使用接口可以保留类继承,扩展性更强。

2.2 JDK1.8 对 Interface 的更新

在 JDK1.8 之前,接口完全抽象,只允许出现抽象方法和常量。

从 JDK1.8 开始,接口中可以出现静态方法和默认方法(等同为成员方法)。

2.3 Interface 中的修饰符

在 interface 中,修饰符可以省略。

常量前的 public static final 都可以省略。不写的话默认就是 public static final 。

方法前的 abstract 可以省略。不写修饰符的话默认就是 abstract 。

2.4 Interface 中的默认方法

修饰符为 default ,得到默认方法,需要创建子类对象进行调用。这个方法相当于成员方法,有具体的实现功能。

3.Object

3.1 Object

Object 是根类,所有类都直接或间接继承 Object 。

Object 中有许多方法,比如 toString , equals , finalize 。

3.2 toString

toString 代表了该对象的字符串形式的描述方式。

输出引用类型的时候会自动调用该对象的 toString 方法,默认的 toString 方法是打印内存地址。

3.3 equals

equals 方法的设计目的是比较两个对象是否相等。

默认的 equals 比较的是内存地址。

如果我们不需要比较内存地址,而是要比较某些属性值的话,就需要根据需求进行覆写。

通过 String 类的源码可以知道, String 已经覆写了 equals 方法,比较的是值是否相同。

3.4 finalize

JVM 在进行自动垃圾回收的时候,会调用该对象的 finalize 方法。

finalize 方法本身没有回收功能,只是在被回收之前调用。

堆内存中存在某个对象,但是没有任何引用指向该对象的时候,该对象就成为了垃圾数据。

如果对您有帮助,请点赞关注支持我,谢谢!❤
如有错误或者不足之处,敬请指正!❤

你可能感兴趣的:(不易,Java基础知识,java,学习)