java 父类如何在运行期动态获取子类类名

java 父类如何在运行期动态获取子类类名,第1张

给你写了3个类:

A类:

package cntest;

public class A {

 public void test(){

  Systemoutprintln(thisgetClass());

  Systemoutprintln(thisgetClass()getSimpleName());

  Systemoutprintln(thisgetClass()getName());

 }

}

B类:

package cntest;

public class B extends A{

 

}

Test类:

package cntest;

public class Test {

 /

   @param args

  /

 public static void main(String[] args) {

  B b = new B();

  btest();

 }

}

结果:

class cntestB

B

cntestB

你要知道,在继承关系中,不管父类还是子类,这些类里面的this都代表了最终new出来时的那个类型的实例对象,所以在父类中你可以中this获取到子类的信息!

不止一层继承关系时,你可以根据下面:

A类:

package cntest;

public class A {

 public void test(){

  Systemoutprintln(thisgetClass());

  Systemoutprintln(thisgetClass()getSimpleName());

  Systemoutprintln(thisgetClass()getName());

  Systemoutprintln(thisgetClass()getSuperclass());

  Systemoutprintln(thisgetClass()getSuperclass()getSimpleName());

  Systemoutprintln(thisgetClass()getSuperclass()getName());

 }

}

B类:

package cntest;

public class B extends A{

 B(){

//  Systemoutprintln("B");

 }

}

C类:

package cntest;

public class C extends B{

 C(){

//  Systemoutprintln("C");

 }

}

Test类:

package cntest;

public class Test {

 /

   @param args

  /

 public static void main(String[] args) {

  C c = new C();

  ctest();

 }

}

结果:

class cntestC

C

cntestC

class cntestB

B

cntestB

ASP/ASPNET都是运行于服务器上的版本,在服务器上执行后才将结果推送到客户端浏览器。所以你的ASPNET代码所取得的SystemDateAndTimeNow所返回的就是服务器上的时间。 而如果你在java脚本中获取的时间是被客户端浏览器解释的,所以这样获取的时间是客户端时间。<script language="Javascript">//java脚本</script>

Foible 朋友的说法不对。

B b=new B(); 这种方式,实际上是实例化了子类的对象,注意:内存中还是子类对象。

((A)b)m(); 表面上看起来是父类对象了,但是由于内存中是子类对象,所以调用的还是子类方法

A b=new B();

bm();

这种方法和你写的实际是一个效果,虽然上溯造型到了父类,由于子类重写了父类的方法,调用的还是子类的方法(也就是所:方法的实现,最后是在子类中实现的)。

所以,总结如下:

如果子类没有重写父类的方法,调用父类的方法的时候,实际上是去父类的内存中实现,可以调用父类方法。

如果子类重写了父类的方法,那么,你虽然上溯造型到了父类,由于内存还是子类,该方法的实现还是在子类,所以用实例化的对象是调用不到父类的,这种情况下,只能用super关键字。

用static的情况不讨论的情况下不讨论是这样的,不知道到您是否不满意,不满意的话可以发消息继续讨论。

以上就是关于java 父类如何在运行期动态获取子类类名全部的内容,包括:java 父类如何在运行期动态获取子类类名、ASP.NET 获取服务器已运行时长、Java 如何在方法运行时获得当前方法的Method(实例)等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9647359.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-30
下一篇 2023-04-30

发表评论

登录后才能评论

评论列表(0条)

保存