其他分享
首页 > 其他分享> > 20220723 第五小组 罗大禹 学习笔记

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