大家好,欢迎来到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的子类全都报错了。
final class:该类没有子类 public final class\ final public class
final 方法:子类对象不能重写父类的某个方法,但这个方法依然可以被子类继承使用。
final添加到方法中的局部变量:再具体使用之前进行赋值即可,一旦赋值不允许被修改。感觉类似js的const。
final 方法中的局部变量:只要在具体被使用之前进行赋值即可,一旦赋值不允许被修改类中成员属性:赋值过程:1、定义直接初始化 2、构造方法 3、构造代码块。
当final修饰的变量是引用类型的时候,在实例化之后不允许修改引用地址。但对象里的属性值是可以修改的。
用static和final修饰的变量代表,全局静态不可修改的变量。(只需要加载一次,不需要之后修订的内容可以通过这两个关键字的内容来进行修饰)。
public static final int temp = 12;
四、注解
JDK1,5版本引入的一个新特性
可以声明在包、类、属性、方法、局部变量、方法参数等的前面,用来对这些元素进行说明、注释。相当于一个标记。
@Override标识该方法重写了父类的eat方法。
注解:
按照运行机制分:
①源码注解:@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