继承中的final/super关键字、Object类

一、final关键字

final可以修饰类、方法、属性、变量

1. final修饰类,则该类不允许被继承

2. final修饰方法,则该方法不允许被覆盖(重写)

3. final修饰属性,则该类的属性不会进行隐式的初始化(类的初始化中属性必须赋值),或者在构造方法中赋值(但只能二者选一)

4. final修饰变量,则该变量的值只能进行一次赋值,即变为常量


二、super关键字

super在对象的内部使用,代表父类对象。

1. 访问父类对象的属性 super.属性名

2. 访问父类对象的方法 super.方法名()

*****************************************************************************************************************************

来一段代码:

父类Animal


子类Dog。定义方法method(),输出父类属性、子类属性,调用父类方法、子类方法


main函数


执行结果:


(注意,父类对象的属性和子类对象的属性并无关系,是两个东西。)



另外,子类的构造过程中必须调用父类的构造方法。

在子类Dog的构造方法中隐式使用super()调用public Animal(){}



如果子类的构造方法中没有显式调用父类构造方法,则系统默认调用无参构造方法。

如果显式使用构造方法,必须在子类的构造方法的第一行。

如果子类没有显式调用父类的构造方法,而父类没有无参构造方法,则编译出错。


***************************************************************************************************************************************



三、Object类

Object类是所有类的父类,如果一个类没有使用extends关键字明确标识继承某个类,则该类默认继承Object类。

在新建一个类时可以看到,默认的Superclass就是Object类。


Object类的方法适用于所有子类。


1. toString()

如果输出一个对象,则输出的内容是该对象在内存中的地址,称为哈希码。


************************************************************************************************************************************

可以通过重写toString()方法表示对象的属性

步骤:
选择菜单中的source→Generate toString(),然后勾选需要重写输出的属性



然后生成新的toString()方法 (注意该方法的返回值类型是String)


main函数中创建一个对象,并进行输出


执行结果:

*******************************************************************************************************************************


2. equals()

比较对象的引用是否指向同一块内存地址

注意:Animal animal=new Animal();    中animal只是所创建的新对象的引用

********************************************************************************************************************************


如果想要比较两个对象dog、dog2(的值),这样写是不行的,因为dog和dog2指向不同的内存地址。

所以需要重写equals()方法

同样在菜单栏选择source→Generate hashCode() and equals(),勾选属性,确定

生成hashCode()和equals()两个方法。由于hashCode()没用,先删去


equals()方法比较复杂,以下注释是解释怎么比较的


其中getClass()是获取类对象,与“类的对象”进行区分!


类对象是类的代码信息。比如这个类有什么属性,是什么类型,变量名是什么,有哪些方法,方法名是什么,方法里的代码是什么

而类的对象关注类的属性值的信息,即对象的数据信息。比如某对象有属性age,关注age的值是多少


再回到代码,此时进行比较,执行结果:

两个对象是相同的


***********************************************************************************************************************************************

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值