2022-07-23 第二组 刘禹彤 学习笔记
打卡第14天
今天继续学习面向对象
###学习内容
1.final关键字:最终的,终极的
final可以修饰的结构:1.类 public final class
最终类,终极类
2.属性 private final String name
常量,不能改变能改变
- 常量的命名规则:单词的所有字母都要大写,如果是多个单词,用下划线分割
常量不能只声明不赋值
3. .方法 private final void show
不能被重写
4.不能修饰构造器
2.方法重写
- @Override 注解
- 我们要在方法的重写处标明重写的注解
- 方法的重写是需要注解来标识的
3.祖先类;Object(最顶级父类)
- 如果一个类没有明确的写出它的父类是谁,那它的父类就是object
- Object类中有11个方法:
1.hashCode():它的返回值实际上是对象运行时的内存地址
hash算法:一般翻译“散列",把任意长度的输入,通过一个散列算法变换成 固定长度的输出,输出的结果就是这个散列值
密码加密MD5加密,SHA家族
2.equals(): 和==没区别,比地址,为了让子类重写
3.toString:转换成字符串,当我们直接使用对象时,会默认使用tostring(),为了让子类重写
4.finaLize:垃圾回收的方法
5.clone():克隆,必须实现cloneable接口
4.调用父类的无参构造器,没有默认无参
5.如果写成super(xxx),this(xxx)不能一起用,super.xxx(xxx)z这种都可以
###学习心得:
今天学习了final关键字,方法重写以及Object的方法使用,总体感觉还能够跟上上课进度,理解的还可以,但是最后的例子有的地方还不太懂,下课问过同学后,对案例基本理解了。
###掌握程度:理解
###案例:
public class Ch03 { public static void main(String[] args) { Ch03 ch03 = new Ch03(); // System.out.println(ch03.hashCode()); Ch03_Person p1 = new Ch03_Person("haha","220202200101010101"); //tostring System.out.println(p1); Ch03_Person p2 = new Ch03_Person("haha","220202200101010102"); System.out.println(p1.equals(p2)); // Integer i1 = 200; // Integer i2 = 200; /*Integer内部,有一个缓冲区,把byte范围内的数缓存起来 **/ // System.out.println(i1.equals(i2)); } }
public class Ch03_Person { private String name; private String cardID; public Ch03_Person(String name, String cardID) { this.name = name; this.cardID = cardID; } @Override public boolean equals(Object obj){ Ch03_Person person = (Ch03_Person)obj; //强转 // int temp = (int)1.0; if (this == person){ return true; } if (this.cardID.equals(person.cardID)){ return true; } return false; } @Override public String toString() { return "[name= " + name + ",card= " + cardID + "]"; } }
运行结果: