2022-7-23 第一小组 甘源册 学习笔记

1.final关键字

  • final关键字:最终的,终极的。
  • final可以修饰的结构:
    • 类,public final class
      • final修饰的类不能被继承(不能被扩展,延申 )
    • 属性 private final String name;
      • final修饰的属性就是常量,不能重新赋值。不能放在构造器里,不能setter方法
      • 常量的命名规则:单词的所有字母都得大写,如果是多个单词,用下划线( _ )隔开
      • 常量不能只声明不赋值(代码块里可以)
    • 方法 private final void show(){}
      • 不是final修饰的类,可以被继承,但是类里边final修饰的方法不能被重写
  • 方法的重写
    • 注解@Override(必须在方法的重写处,表明重写的注解)

2. Object

祖先类(最顶级父类)——是所有类的直接或间接父类

  • 如果一个类没有明确的写出它的父类是谁,它的父类就是Object

2.1 hashCode()方法

  • 它的返回值实际上就是对象运行时的内存地址(栈)

  •     String s1="1";
        String s2="1";
        Ch ch = new Ch();
        Ch01 ch01 = new Ch01();                 //结果
        System.out.println(ch.hashCode());      //764977973
        System.out.println(ch01.hashCode());    //381259350
        System.out.println(s1.hashCode());      //49
        System.out.println(s2.hashCode());      //49
    

2.2 equals()方法

  • Object类的equals方法与 == 没区别,都是比地址。
  • 功能:为了让子类重写
  • 在Integer内部,有一个缓冲区,把byte范围内的数,缓存起来(比较用equals)

2.3 toString()方法

  • 功能:转换成字符串的方法

  • 当我们直接使用对象时会默认调用toString方法

2.4 finalize()方法

  • 垃圾回收的方法——默认

2.5 clone()方法

  • 克隆,必须实现接口

练习

Teacher类 - ```java package com.gyc.morning.test;
import java.util.Arrays;

public class Teacher  extends  Person {
    private String tenno;
    private Student[] stu;

    public void teach(){
        for (int i = 0; i < stu.length; i++) {
            System.out.println(stu[i]);
        }
    }

    public String getTenno() {
        return tenno;
    }

    public void setTenno(String tenno) {
        this.tenno = tenno;
    }

    public Student[] getStu() {
        return stu;
    }

    public void setStu(Student[] stu) {
        this.stu = stu;
    }

    @Override
    public boolean equals(Object obj) {
        Teacher tea=(Teacher)obj;
        if (this.getCardId().equals(tea.getCardId())){
            return true;
        }
        return false;
    }

    @Override
    public String toString() {
        String a=null;
        if (stu==null){
              a="\n没有学生";
        }else {
              a=",\n学生有"+Arrays.toString(stu);
        }

        return "老师的" +"姓名:"+this.getName()+
                " 年龄:"+this.getAge()+
                " 工号:'" + tenno + '\'' +a;
    }
}

```
Studeng类 - ```java package com.gyc.morning.test;
public class Student extends Person {
    private String stuno;
    private Teacher teass;


    public void study(){
        System.out.println(teass);
    }

    public String getStuno() {
        return stuno;
    }

    public void setStuno(String stuno) {
        this.stuno = stuno;
    }

    public Teacher getTeass() {
        return teass;
    }

    public void setTeass(Teacher teass) {
        this.teass = teass;
    }

    @Override
    public boolean equals(Object obj) {
        Student student=(Student) obj;
        if (this.getCardId().equals(student.getCardId())){
            return true;
        }
        return false;
    }

    @Override
    public String toString() {
        return "学生的" +"姓名:"+this.getName()+
                " 年龄:"+this.getAge()+
                " 学号:'" + stuno + '\'' +
                ", 老师:" + teass.getName();
    }
}

```
Person类 - ```java package com.gyc.morning.test;
public class Person {
    private String name;
    private Integer age;
    private String cardId;


    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public String getCardId() {
        return cardId;
    }

    public void setCardId(String cardId) {
        if (cardId.length()==18){
            this.cardId = cardId;
        }else {
            System.out.println("身份证号码长度错误");
            return;
        }
    }

    @Override
    public String toString() {
        return "Person{" +
                "名字'" + name + '\'' +
                ", 年龄" + age +
                ", 身份证号'" + cardId + '\'' +
                '}';
    }
}

```
School类 - ```java package com.gyc.morning.test;
public class School {
    private Student[] stu;
    private Teacher[] tea;

    public School() {
    }

    public School(Student[] stu, Teacher[] tea) {
        this.stu = stu;
        this.tea = tea;
    }

    public void show(){
        for (int i = 0; i < tea.length; i++) {
                System.out.println(tea[i]);
        }
    }
}

```
Demo类 - ```java package com.gyc.morning.test;
public class Demo {
    public static void main(String[] args) {
        Demo demo = new Demo();

        Student student1 = new Student();
        Student student2 = new Student();
        Student[] students = new Student[]{student1,student2};

        Teacher teacher1 = new Teacher();
        Teacher teacher2 = new Teacher();
        Teacher[] teachers = new Teacher[]{teacher1,teacher2};

        School school = new School(students,teachers);

        teacher1.setCardId("220421200110210510");
        teacher2.setCardId("220421200110210510");
        teacher1.setAge(22);
        teacher2.setAge(42);
        teacher1.setTenno("12");
        teacher2.setTenno("132");
        teacher2.setName("红烧肉");
        teacher1.setName("花生米");
        teacher2.setStu(students);

        student1.setTeass(teacher2);
        student2.setTeass(teacher2);
        student1.setAge(12);
        student2.setAge(13);
        student1.setStuno("12");
        student2.setStuno("132");
        student1.setName("小白");
        student2.setName("小黑");
        student1.setCardId("220421200110210510");
        student2.setCardId("220421200110210511");

        //老师类的teach方法
        teacher2.teach();
        //学生类的study方法
        student1.study();
        //学校类的show方法
        school.show();
        //老师身份比较
        demo.test1(teacher1,teacher2);
        //学生身份比较
        demo.test2(student1,student2);

    }


    public void test1(Teacher teacher1,Teacher teacher2){
        boolean equals = teacher1.equals(teacher2);
        if (equals==true){
            System.out.println("身份证号相同,一个人");
        }else if (equals==false){
            System.out.println(teacher1.getName()+"与"+teacher2.getName()+"不是同一个人");
        }
    }
    public void test2(Student student1,Student student2){
        boolean equals1 = student1.equals(student2);
        if (equals1==true){
            System.out.println("身份证号相同,一个人");
        }else {
            System.out.println(student1.getName()+"与"+student2.getName()+"不是同一个人");
        }
    }
}

```

posted @ 2022-07-23 20:29  (≧∇≦)(≧∇≦)(≧∇≦)  阅读(34)  评论(0)    收藏  举报