Objec类和final关键字的用法

 

         一、在继承中,子类继承父类,那父类继承谁呢,java中如果类没有指定继承谁,那么就默认继承Object类,object类是所有对象的直接或者间接的父类,根类,或者叫做基类,它里面定义的功能所有的对象都应该具备。

         二、object类中的toString()方法:java中所有对象都有toString这个方法,它输出的是对象所属的类名,@加上内存地址(十六进制的)。具体代码体现如下:

class DuoDemo
{
 public static void main(String[] args)
 {
   Person p=new Person();
  // System.out.println(p);//默认调用toString这个方法
  //输出对象所属类名+@+十六进制的hashcode值
  //System.out.println(p.toString());
  System.out.println(p.getClass().getName()+"@"+Integer.toHexString(p.hashCode()));
 }
 //getClass()获取类和类名;getName()获取类名;Integer调用转换为十六进制的方法把hashCode转换为十六进制数:
}
class Person
{
 void eat()
 {
  System.out.println("吃饭");
 }
}

      三、Object类中equals的()的方法,用来比较两个对象是否相等

1、如果定义一个Person 类,Person p1=new Person();Person p2=new  Person();

那么p1和p2在栈中分别指向堆中两个不同的对象,所以两个对象的地址值是不同的,那么

System。out 。println(p1.equals(p2));输出结果就是false

2.如果Person  p1=new  Person();         Person     p2=p1;   p1指向堆中的对象,又把内存地址复制一份给了p2,所以p1和p2都指向堆中的对象。堆中只有一个对象。所以只有一个内存地址,那么

System。out、println(p1.equals(p2));输出结果为true

3、当然此处比较的是内存地址,如果把equals换成是==号,也可以。

       四、final关键字的用法:final     最终的,最后的,它可以用来修饰类、变量、方法

1.被final 修饰的类,是最终类,不能够被继承,这在一定程度上保证了程序的安全性。

2.被final修饰的变量,就成为了常量,只能进行一次赋值,不能进行第二次赋值,而且变量名要大写。,如果这个变量有多个单词组成,那么单词之间用_号连接。

如:public  static  final   PI=3.14;

注意:内部类中定义在类中的局部位置上时,只能访问该局部被fina 修饰的局部变量

3.被fianl修饰的方法,不能被重写

原文地址:https://www.cnblogs.com/warrior4236/p/6055738.html