2022-7-23 第一小组 甘源册 学习笔记
1.final关键字
- final关键字:最终的,终极的。
- final可以修饰的结构:
- 类,public final class
- final修饰的类不能被继承(不能被扩展,延申 )
- 属性 private final String name;
- final修饰的属性就是常量,不能重新赋值。不能放在构造器里,不能setter方法
- 常量的命名规则:单词的所有字母都得大写,如果是多个单词,用下划线( _ )隔开‘
- 常量不能只声明不赋值(代码块里可以)
- 方法 private final void show(){}
- 不是final修饰的类,可以被继承,但是类里边final修饰的方法不能被重写
- 类,public final class
- 方法的重写
- 注解@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()+"不是同一个人");
}
}
}
```


浙公网安备 33010602011771号