Java 反射多继承_Java反射机制demo(四)—获取一个类的父类和实现的接口

Java反射机制demo(四)—获取一个类的父类和实现的接口

1,Java反射机制得到一个类的父类

使用Class类中的getSuperClass()方法能够得到一个类的父类

如果此 Class 表示 Object 类、一个接口、一个基本类型或 void,则返回 null。如果此对象表示一个数组类,则返回表示该 Object 类的 Class 对象。

测试代码:

/**

* Created with IntelliJ IDEA.

* Description:

* User: zhubo

* Date: 2017-09-01

* Time: 17:34

*/

public class Demo4 {

public static void main(String[] args) {

Class> c = Integer.class;

System.out.println("Integer的父类是:"+c.getSuperclass());

c = Number.class;

System.out.println("Number的父类是:"+c.getSuperclass());

c = Object.class;

System.out.println("Object的父类是:"+c.getSuperclass());

}

}

Integer的父类是:class java.lang.Number

Number的父类是:class java.lang.Object

Object的父类是:null

由于Java没有多继承,一个类最多只能有一个父类,因此返回类型并不是一个数组。

2,Java反射机制返回一个类实现的接口

当我们开发一个接口,并用一个类去实现它,我们看到某个类,就知道它实现了对应的什么接口,但是机器本身得到一个类时,并不知道它实现的接口是什么样子。通过反射机制,可以取到某个类实现的接口的Class对象,从而可以探查这个接口内部的结构。

本文中给出了一个简单的Demo。

首先,接口的定义如下;

/**

* Created with IntelliJ IDEA.

* Description:

* User: zhubo

* Date: 2017-09-01

* Time: 17:58

*/

public interface Animal {

public static final String name="animal";

public String sayHello(String name);

}

然后,定义一个类去实现这个接口

/**

* Created with IntelliJ IDEA.

* Description:

* User: zhubo

* Date: 2017-09-01

* Time: 17:58

*/

public class Dog implements Animal {

@Override

public String sayHello(String str) {

return String.format("",this.name,str);

}

}

接口和实现类中都只有一个方法。

测试类的代码如下:

public static void main(String[] args) {

Class> c = Dog.class;

Class> interfaces[] = c.getInterfaces();

for (Class> inte : interfaces){

System.out.println("Dog实现接口 : " + inte);

}

}

运行结果:

Dog实现接口 : interface reflact.bean.Animal

当然,Java没有多继承,但是可以实现多个接口,因此这里返回了一个数组。

需要注意的是:

Class>[] getInterfaces()得到的数组中,接口对象顺序和这个对象所表示的类中implements子句中接口名的顺序,是一致的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值