0.final修饰符(上)
final修饰类:不可被继承
final修饰方法:不可被子类覆盖
final修饰变量:不可被赋值
构造方法不能用final修饰
用来修饰成员变量
- 可以在构造方法中赋值,或者直接在定义的时候赋值
用来修饰静态变量
- 可以在初始的时候赋值,或者在static块中赋值
final修饰方法
- 方法不可以被子类覆盖
final修饰形参
- 形参变量就不能被赋值了
final修饰局部变量
- 也是只能声明的时候就赋值,不能赋值两次
总结:final修饰变量必须要赋值,且只能赋值一次
1.final修饰符(下)
- 当我们时用final修饰引用的时候
- 引用指向对象不可以改变
- 但是对象的内容时可以改变的
2.继承里的静态方法
- 如果子类静态方法签名与父类相同的话,返回值必须相同
3.for语句的另一种写法
1 | public double getBig() { |
4.万类之祖:Object类
所有的类,都直接或者间接继承自Object类
常见的方法
- toString()
- getClass()
- hashCode()
native代表会调用当前平台的方法
5.hashCode和equals方法(上)
- hashCode可以翻译为哈希码,或者散列码,应该是表示对象的特征值的int整数
- equals方法应该用来判断两个对象从 逻辑上是否相等
6.hashCode和equals方法(下)
- 对于String类来说,编译器会对其进行特殊的优化
- 如果两个String比较短,且 内容相同则java会使用同一个对象
- 如果内容很+
- 长就会打破限制
7.toString方法
- 可以使用ide的功能自动生成toString的方法
- 人一个java对象都可以调用toString方法
8.初探Class类
Class是代表类的类,每个Class类的实例,都代表了一个类
通过一个类的Class实例,可以获取一个类所有的信息包括成员变量方法等
动态参数
- (String… args)
- 必须放在最后一个参数的位置
常见的方法
- clazz.getField(“count”); 可以获得这个类中的一个成员变量
- clazz.getMethod(“equals”,Object.class); 可以获这个类中的一个方法
9.初探反射
使用反射可以访问属性
1
2Field countField = clazz.getField("count");
System.out.println(countField.get(merchandise));使用反射可可以访问方法
1
2Method decMethod = clazz.getMethod("des");
decMethod.invoke(merchandise);使用反射可以访问静态方法和属性
1
2Field staticField = clazz.getField("Static_Merber");
System.out.println(staticField.get(null));静态的方法也是类似,在对象的位置写null即可
使用反射可以访问private方法和属性
1 | Field countField = clazz.getDeclaredField("count"); |