本文已参与「新人创作礼」活动,一起开启掘金创作之路。
.class是类的访问方式,一般使用类名.class。getClass是个非静态方法,只能使用对象.getClass()方法。.class与getClass()返回结果相同,返回的是详细的类的名称,包括路径名。getSimpleName是获得类名简称,一般和上面的结果连用,即.class.getSimpleName()或者getClass().getSimpleName()。
上案例:定义父类Fruit和子类Apple,案例和打印结果为:
// 父类
public class Fruit {
public Fruit() {
//System.out.println(this.getClass().getSimpleName());
}
public void printInfo(){
System.out.println(getClass().getSimpleName());
}
}
//子类
public class Apple extends Fruit{
public Apple() {
super();
}
public static void main(String[] args){
Apple apple = new Apple();
System.out.println(apple.getClass().getSimpleName());
System.out.println(Apple.class.getSimpleName());
System.out.println(Fruit.class.getSimpleName());
}
}
this在类中写代码永远指当前类的对象,尤其在内部类或者子类的情况下要区分this到底指的哪个对象。下案例是子类对象调用父类的构造函数的运行结果:
//父类
public class Fruit {
public Fruit() {
System.out.println(getClass().getSimpleName());
System.out.println(Fruit.class.getClass().getSimpleName());
}
}
//子类
public class Apple extends Fruit{
public Apple() {
super();
}
public static void main(String[] args){
Apple apple = new Apple();
}
}
\