一、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的值是多少
再回到代码,此时进行比较,执行结果:
两个对象是相同的
***********************************************************************************************************************************************