java中object类怎么赋值_Java面向对象之Object类

java中object类怎么赋值_Java面向对象之Object类一、继承体系的老祖宗是Object类。(Object类是所有类的父类)当我们不希望在程序中某些类被继承,某些方法被重写,某些数据被修订。就是final关键字闪亮登场的时候了。一个类没有使用extends关键字明确标识继承关系,则默认继承Object类(包括数组)Java中每个类都可以使用Object中定义的方法。二、Object.equals();之前判断的是两个引用是否一致;String类重写…

大家好,欢迎来到IT知识分享网。

一、继承体系的老祖宗是Object类。(Object类是所有类的父类)

当我们不希望在程序中某些类被继承,某些方法被重写,某些数据被修订。就是final关键字闪亮登场的时候了。

一个类没有使用extends关键字明确标识继承关系,则默认继承Object类(包括数组)

Java中每个类都可以使用Object中定义的方法。

二、Object.equals(); 之前判断的是两个引用是否一致;

String类重写了equals方法,判断了两个字符串的值是否一致。

测试类的main方法里新建两个Animal实例,用equals作比较,最后打印false

Animal Animala = new Animal();

Animal Animalb = new Animal();

Animala.setName(“花花”);

Animalb.setName(“花花”);

System.out.println(Animala.equals(Animalb)); //false

在用equals方法比较两个字符串,结果就是true

String aString = new String(“花花”);

String bString = new String(“花花”);

System.out.println(aString.equals(bString)); // true

在animal类中重写equals方法。

public boolean equals(Object obj) {

if(obj==null) {

return false;

}

Animal tempAnimal = (Animal)obj;

if(this.getName().equals(tempAnimal.getName())){

return true;

}else {

return false;

}

}

在执行如下代码就是true.

Animal Animala = new Animal();

Animal Animalb = new Animal();

Animala.setName(“花花”);

Animalb.setName(“花花”);

System.out.println(Animala.equals(Animalb)); //true

Java.lang.NullPointerException 空指针异常。

如下,打印实例对象,会默认调用toString方法,所以调了没调结果都一样。包+类名+@+内存位置(通过hash算法去得到的)。

Animal Animala = new Animal();

System.out.println(Animala); // com.immoc.animal.Animal@7852e922

System.out.println(Animala.toString()); // com.immoc.animal.Animal@7852e922

三、final关键字

1.首先将final加到Animal类前面(或后面,两者顺序可以互换)。会发现继承Animal的子类全都报错了。

42fe76e0849d1b45a927a6654d896103.png

0fdffc143e32f89f69fc55eff015a96f.png

final class:该类没有子类 public final class\ final public class

final 方法:子类对象不能重写父类的某个方法,但这个方法依然可以被子类继承使用。

final添加到方法中的局部变量:再具体使用之前进行赋值即可,一旦赋值不允许被修改。感觉类似js的const。

final 方法中的局部变量:只要在具体被使用之前进行赋值即可,一旦赋值不允许被修改类中成员属性:赋值过程:1、定义直接初始化 2、构造方法 3、构造代码块。

当final修饰的变量是引用类型的时候,在实例化之后不允许修改引用地址。但对象里的属性值是可以修改的。

用static和final修饰的变量代表,全局静态不可修改的变量。(只需要加载一次,不需要之后修订的内容可以通过这两个关键字的内容来进行修饰)。

fa20511cfcf20b6912721299494ba5b7.png

public static final int temp = 12;

3fcd48ae4d16983550170c3001509a6b.png

四、注解

JDK1,5版本引入的一个新特性

可以声明在包、类、属性、方法、局部变量、方法参数等的前面,用来对这些元素进行说明、注释。相当于一个标记。

@Override标识该方法重写了父类的eat方法。

981feddb4991937255aafd53420db1bc.png

注解:

按照运行机制分:

①源码注解:@Override 源代码当中有用,编译成class文件就没用了。

②编译时注解:源码和class文件都存在。

③运行时注解: 在运行阶段还起作用,甚至会影响运行逻辑的注解。

按照来源分:

①来自JDK的注解。

②来自第三方的注解。

③我们自己定义的注解。

五、父类方法。

public Animal create() {

return new Animal();

}

子类重写create方法可以这么写:

@Override

public Dog create() {

// TODO Auto-generated method stub

return new Dog();

}

子类重写父类方法的时候,向下兼容,可以返回父类实例,也可以返回子类实例。

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/15025.html

(0)
上一篇 2024-02-21 22:45
下一篇 2024-02-22 08:00

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

关注微信