JAVA面向对象的多态性及抽象类和接口

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA面向对象的多态性及抽象类和接口相关的知识,希望对你有一定的参考价值。

一:Object类
Object类是所有Java类的根基类(“祖先类”)
如果在类的声明中未使用extends关键字指明其基类,则默认基类为Object类
1.toString()方法

Object类中定义有public String toString()方法,其返回值是String类型,描述当前对象的有关信息。

如果直接打印某对象的引用,则默认会调用这个对象的toString()方法,默认打印的内容中包含这个引用所指向的内存地址。
可以根据需要在用户自定义类中重写toString()方法。
2.equals()方法

Object类中定义有public boolean equals(Object obj) 方法,提供定义对象是否“相等”的逻辑。

Object的equals方法定义为:x.equals(y),当x和y指向同一个地址时返回true,否则返回false。

String类中已经重写了equals(Object obj)方法,重写后的方法比较的是两个字符串的”内容”是否一样(注意:==比较对象的引用)。

可以根据需要在用户自定义类型中重写equals方法。

二:多态性

封装是为了保护属性的一种操作,继承是为了扩展类的功能

是由封装性和继承性引出的面向对象程序设计语言的另一特征。

从方法的角度来看:
方法的重载与重写

重载(overloading):根据传入的参数不同,完成的功能也不同

重写(override):子类根据需求重写父类中的方法。

instanceof关键字

在java中可以使用instanceof关键字判断一个对象是否属于一个类的实例

格式:
对象 instanceof 类 ?返回boolean类型

final关键字

在JAVA中声明类、属性和方法时,可以使用关键字final来修饰。
注意:

1.final修饰变量(成员变量或局部变量),则成为常量,只能赋值一次

final  类型  variableName;

修饰成员变量时,定义时同时给出初始值,而修饰局部变量时不做要求。

2.final修饰方法,则该方法不能被子类重写
final 返回值类型 methodName(paramList)
{

}

3.final修饰类,则类不能被继承
final class finalClassName{

}

三:抽象类与接口

用abstract修饰的类即为抽象类
abstract class 抽象类名{
}

抽象类不能被实例化,必须被继承,抽象方法必须被重写,生成它的子类。
由abstract修饰的方法就是抽象方法,抽象方法没有方法体。

抽象类不一定要包含抽象方法,若类中包含了抽象方法,则该类必须被定义为抽象类。

如果一个子类没有实现抽象父类中所有的抽象方法,则子类也成为一个抽象类。

构造方法、静态方法、私有方法、final方法不能被声明为抽象的方法。
接口

接口(interface)是抽象方法和常量值的定义的集合。

接口是一种“标准”、“契约”。

从本质上讲,接口是一种特殊的抽象类,这种抽象类中只能包含常量和方法的定义,而没有变量和方法的实现。

接口的声明语法

包括接口声明和接口体

完整的接口声明:

[public] interface 接口名称[extends listOfSuperInterface]
{ … }

接口体包括常量定义和方法定义

常量定义: type NAME=value;  该常量被实现该接口的多个类共享; 具有public ,final, static的属性.

方法体定义:具有 public和abstract属性

接口的实现类

与抽象类一样,接口要使用也必须通过子类,子类通过implements关键字实现接口

一个类可以实现多个接口,在implements子句中用逗号分开

非抽象子类必须实现接口中定义的所有方法

实现格式:
class 子类 implements接口A,接口B…{
}

接口的使用规则:

接口中所有的方法都是public abstract。
在接口中声明方法时,不能使用static,final,synchronized,private,protected等修饰符。
一个接口可以继承自另一个接口。
java中不允许类的多继承,但允许接口的多继承。

接口中可以有数据成员,这些成员默认都是public static final
接口的用途:

(1)通过接口实现不相关类的相同行为,而无需考虑这些类之间的关系.
(2)通过接口指明多个类需要实现的方法
(3)通过接口了解对象的交互界面,而无需了解对象所对应的类

以上是关于JAVA面向对象的多态性及抽象类和接口的主要内容,如果未能解决你的问题,请参考以下文章

面向对象之多态性(接口类)和抽象类

廖雪峰Java2面向对象编程-4抽象类和接口-1抽象类

面向对象 多态抽象类和接口

day21接口类和抽象类,隔离原则,开放封闭原则,多态

026 面向对象05——封装

java.面向对象设计的核心——类和对象