1. 反射
获取类本身,就叫“反射”,有以下3种方式:
// 通过“实例”获取类
String str = "hello";
Class cls1 = str.getClass(); // 通过“类型”获取类
Class cls2 = String.class; // 通过“全路径字符串”获取类
Class cls3 = Class.forName("java.lang.String"); cls1.getName(); //"java.lang.String"
cls1.getSimpleName(); //"String"
cls1.getPackage().getName(); //"java.lang"
2.多态
多态就是声明的类可以是当前类的实例或者它的各种子类实例
class Person {
public void say() {
System.out.println("Person");
}
} class Student extends Person {
@Override
public void say() {
System.out.println("Student");
}
} public static void main(String[] args) {
Person p1 = new Person();
Person p2 = new Student();
p1.say(); // "Person"
p2.say(); // "Student"
}
一种声明类可能是多种实例,这有利与Java的扩展性