b. java中的接口(interface)也继承了object类,Object类(部分)和String类

Java的API

Java的API(API:Application(应用)Programming(程序)Interface(接口))

JavaAP就是JD中提供给我们使用的类,这些类将底层代码实现封装起来了.我们不需要关系这些类是如何实现的,只需要虚心如何使用这些类.

JKD安装目录下有个src.zip文件,这个文件解压后里面的内容就是所有java的类.可以参看对应的源码.

其次我们可以通过查找帮助文档的方式,来了解Java提供的API如何使用哪些类

Object类的概述

构造方法public Object()

Object类是Java语言的根类,即所有类的父类.他描述了所有的方法子类都可以使用.java中的每个类都是有他扩展而来的.如果没有明确的指出超类,onject就被认为是这个类的超类.

可以使用Object类型的变量引用任何类型的对象.

在Java中只有基本数据类型不是对象,所有的数组类型,不管是对象数组还是基本数组都扩展与Object

接口(Interface)并不继承于object.但是接口类型的父类引用也可拥有Object类的一般方法

转载https://blog.csdn.net/xidiancoder/article/details/78011148

引用自 《The Java Language Specification, Java SE 8 Edition》 中的第9章9.2节

If an interface has no direct superinterfaces, then the interface implicitly declares a public abstract member method m with signature s, return type r, and throwsclause t corresponding to each public instance method m with signature s, return type r, and throws clause t declared in Object, unless a method with the same signature, same return type, and a compatible throws clause is explicitly declared by the interface.

如果一个接口定义是最顶级的(没有 super interfaces),那么这个接口会自动声明一个 abstract member method 结构体来代表所有来自 Object 类(一切类的superclass)中的public方法(包括这些方法的签名、返回类型以及抛出的异常)

再换种说法——意思是接口隐含定义了一套与Object类中的方法签名完全相同的方法,所以,我们在程序中调用接口的那些与Object中具有相同签名的方法时,编译器不会报错!

equals

Equals方法,用于比较两个对象是否相同,他其实就是使用两个对象的内存地址在比较.Object类中的equsls方法内部使用的就是==比较运算符.

public boolean equals(Object obj) {

return (this == obj);

}

然而在大多数时候我比较两个类是否相同会根据对象中的属性值进行比较,也就是我们要经常重写equals方法,实现自己的比较方式.

/*

描述人这个类,并定义功能根据年龄判断是否是同龄人

由于要根据指定类的属性进行比较,这时只要覆盖Object中的equals方法

在方法体中根据类的属性值进行比较

*/

class Person extends Object{

int age ;

//复写父类的equals方法,实现自己的比较方式

public boolean equals(Object obj) {

//判断当前调用equals方法的对象和传递进来的对象是否是同一个

if(this == obj){

return true;

}

//判断传递进来的对象是否是Person类型

if(!(obj instanceof Person)){

return false;

}

//将obj向下转型为Perosn引用,访问其属性

Person p = (Person)obj;

return this.age == p.age;

}

}

==和equals的区别

=

你可能感兴趣的:(b.)