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 (equalstrue){
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  (≧∇≦)(≧∇≦)(≧∇≦)  阅读(44)  评论(0)    收藏  举报