[Java Training]Week 4
0x00
本系列-Java集训系列
记录我带领小组进行Java学习,按照《Java核心技术》第十版进行学习
0x01
继承
0x02
- 子类和父类:父类就是正常的类,子类是继承父类的方法和属性,可以继承public与protected
- super:在子类可以使用super()来调用父类的构造方法,也可以用super.method()调用父类的方法
ManagerTest.java
1 |
|
Employee.java
1 |
|
Manager.java
1 |
|
- 多态:简单理解就是子类以及子类的子类可以使用父类的类型声明的变量来存放,并且可以使用这个变量来进行方法调用等操作
- final:在类声明的时候使用了final修饰符,则表示此类不可以被继承,即不会有子类
- 父类的引用赋给子类的变量,则需要强制类型转换
- 抽象类:使用abstract修饰符修饰类,或者使用abstract修饰类里的方法,则为抽象类,抽象类不可以实例化对象,并且抽象修饰的方法,子类必须实现或者将自身声明为抽象方法留给子类实现,即抽象方法是子类必定存在的方法,并且会有不同实现
PersonTest.java
1 |
|
Person.java
1 |
|
Employee.java
1 |
|
Student.java
1 |
|
- Object: Object是所有类的父类,即除了基本类型,其他类或是子类的子类,如果没有声明是其他类的子类,那么就是Object的子类
- equals:Object类方法,用来判断两个类是否相等,Object里的实现是判断两个类是否是同一个引用,自定义类可以通过重写equals方法来进行定制的相等判定
- hashCode:Object类方法,返回一个int型的散列码
- toString:Object类方法,返回表示对象值的字符串
EqualsTest.java
1 |
|
Employee.java
1 |
|
Manager.java
1 |
|
- 泛型数组列表:数量可变的数组,使用方式为ArrayList
ArrayListTest.java
1 |
|
- 对象包装器:首先,ArrayList
- 参数数量可变:定义参数可变的形式(Object… args),这样可以接收任意多的参数
- 枚举类:看下面代码
EnumTest.java
1 |
|
反射
- Class类:在程序运行期间,Java运行时系统为所有的对象维护一个跟踪每个类信息标识,就是Class类,通过Object类中的getClass()方法可以获得一个对象的Class类型的实例
- 通过这个Class类型的实例,可以进行创建对象,获得类方法、属性、构造方法
ReflectionTest.java
1 |
|
上面的代码遇到private的会报错,下面的代码可以将所有的属性设置成public,然后获取值
ObjectAnalyzerTest.java
1 |
|
ObjectAnalyzer.java
1 |
|
下面代码是演示怎么运行时创建一个新数组,然后从旧数组复制过来
CopyOfTest.java
1 |
|
反射可以调用任意方法
MethodTableTest.java
1 |
|
可以看到反射是很强大的,也是很危险的(破坏封装),如果写应用会很少用到,但是写工具会大量用到
尤其是,反序列化漏洞会用到
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!