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面向对象的多态性及抽象类和接口的主要内容,如果未能解决你的问题,请参考以下文章