java中.class与getClass以及this

335 阅读1分钟

​​​本文已参与「新人创作礼」活动,一起开启掘金创作之路。

 .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();
 
    }
}

\