20220723 第五小组 罗大禹 学习笔记
作者:互联网
20220723 第五小组 罗大禹 学习笔记
Java 面向对象继承(final关键字 Object祖先类)
学习重点
1.final关键字
2.Object祖先类
学习心得
今天老师讲的内容听都是可以听懂的,但是当自己去做练习时,就遇到了许多问题,思路也不是很清晰,还是需要多做练习啊。
学习内容
Java 面对对象继承(final关键字 Object 祖先类)
final关键字(理解)
final关键字:最终的,终极的
final可以修饰的结构:
1.类 public final class
最终类,终极类。(被修饰了就不能被继承)
2.属性 private final String name;
常量,不能重新赋值,不能只声明不赋值;
常量的命名规则:单词的所有字母大写,如果是多个单词,用下划线分割
3.方法 private final void show
被修饰了就不能被重写
方法重写注解:
@Override 注解,
我们建议在方法的重写处表明重写的注解
举例说明:
父类:
public class Father {
public final void show(){
}
public void info() {
}
}
子类:
public class Ch01 extends Father {
private final String NAME_ONE = "哈哈";
// 注解
@Override
public void info() {
super.info();
}
// public void show(){
// 无法调用,会报错
// }
public Ch01(String name){
// 会报错 NAME_ONE被final修饰,无法重新赋值
// this.NAME_ONE=name;
}
}
Object祖先类(最顶级父类)(理解)
如果一个类没有明确的写出它的父类是谁,那它的父类就是Object
Object类中的方法
Object类中有11个方法,在此只说明五个,详细说明equals()方法和toString()方法
1.hashCode()方法
它的返回值实际上就是对象运行时的内存地址。
hash算法:一般翻译“散列”,把任意长度的输入,通过一个散列算法变换成固定长度的输出,输出结果就是散列值。
2.equals()方法
和==没区别,比地址。为了让子类重写。
3.toString()方法
转换成字符串。当我们直接使用对象时,会默认调用toString()方法。
为了让子类重写
4.finalize()方法
垃圾回收的方法
5.clone()方法
克隆,必须实现Cloneable接口
举例说明:
Person类
com.morning.Person全类名
package com.morning;
public class Person {
private String name;
private String cardId;
public Person(String name, String cardId) {
this.name = name;
this.cardId = cardId;
}
//重写equals()方法
@Override
public boolean equals(Object obj) {
// 将Object类型数据强转成Person类型数据
Person person = (Person) obj;
// 当方法调用者的身份证号和参数的身份证号内容相同,则认为是同一个人
if(this.cardId.equals(person.cardId)){
return true;
}
return false;
}
//重写toString()方法
@Override
public String toString() {
return "[name=" + name +",cardId="+ cardId +"]";
}
}
Ch02类:
public class Ch02 {
public static void main(String[] args) {
Person p1 = new Person("张三","220122199009090909");
Person p2 = new Person("张三","220122199009090909");
//会输出false,因为比对的是区地址
System.out.println(p1 == p2);
//重写之前会输出false,若不重写比对的也是区地址。
//重写后为true,比对的为内容
System.out.println(p1.equals(p2));
System.out.println(p1);
Integer i1 = 200;
Integer i2 = 300;
/*
-128~127之间为true,之外为false
Integer内部,有一个缓冲区,把byte范围内的数,缓存起来了。
*/
System.out.println(i1.equals(i2));
}
}
标签:name,Object,20220723,笔记,public,Person,大禹,重写,final 来源: https://www.cnblogs.com/ldydj/p/16513044.html