Java查看类的成员

在一个类的内部,一般包括以下几类成员:成员变量、构造方法、普通方法和内部类等。使用反射机制可以在无法查看源代码的情况下查看类的成员。编写程序,使用反射机制查看ArrayList类中定义的成员变量、构造方法和普通方法。

思路分析:这个ArrayList类不是自己定义的,就是Java里面的java.util.ArrayList类。

代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
import  java.lang.reflect.Constructor;
import  java.lang.reflect.Field;
import  java.lang.reflect.Method;
 
public  class  ClassViewer {
     public  static  void  main(String[] args)  throws  ClassNotFoundException {
         Class<?> clazz = Class.forName( "java.util.ArrayList" );
         System.out.println( "类的标准名称:"  + clazz.getCanonicalName());
         Constructor<?>[] constructors = clazz.getConstructors(); // 获得该类对象的所有构造方法
         System.out.println( "类的构造方法:" );
         if  (constructors.length !=  0 ) {
             for  (Constructor<?> constructor : constructors) {
                 System.out.println( "\t"  + constructor); // 输出构造方法
             }
         else  {
             System.out.println( "\t空" );
         }
         Field[] fields = clazz.getDeclaredFields(); // 获得该类对象的所有非继承域
         System.out.println( "类的非继承域变量:" );
         if  (fields.length !=  0 ) {
             for  (Field field : fields) {
                 System.out.println( "\t"  + field); // 输出非继承域
             }
         else  {
             System.out.println( "\t空" );
         }
         Method[] methods = clazz.getDeclaredMethods(); // 获得该类对象的所有非继承方法
         System.out.println( "类的非继承方法:" );
         if  (methods.length !=  0 ) {
             for  (Method method : methods) {
                 System.out.println(method); // 输出非继承方法
             }
         else  {
             System.out.println( "\t空" );
         }
     }
}

  效果如图:

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
抽象可以包含成员变量,这些成员变量可以是实例变量或静态变量。抽象成员变量与普通成员变量定义方式相同,只是在抽象类中定义的成员变量可以被子继承和使用。 以下是一个示例代码,展示了抽象类中成员变量的定义和使用: ```java abstract class AbstractClass { // 实例变量 protected int instanceVariable; // 静态变量 protected static int staticVariable; // 构造方法 public AbstractClass(int instanceVariable) { this.instanceVariable = instanceVariable; } // 抽象方法 public abstract void abstractMethod(); } class ConcreteClass extends AbstractClass { public ConcreteClass(int instanceVariable) { super(instanceVariable); } @Override public void abstractMethod() { System.out.println("具体实现抽象方法"); } } public class Main { public static void main(String[] args) { ConcreteClass concreteObj = new ConcreteClass(10); System.out.println("实例变量值: " + concreteObj.instanceVariable); System.out.println("静态变量值: " + AbstractClass.staticVariable); concreteObj.abstractMethod(); } } ``` 在上面的示例,抽象`AbstractClass`定义了一个实例变量`instanceVariable`和一个静态变量`staticVariable`。子`ConcreteClass`继承了抽象,并通过调用父的构造方法来初始化实例变量。最后,在`Main`类中创建了一个`ConcreteClass`对象,并打印了实例变量和静态变量的值,以及调用了抽象方法的实现。 需要注意的是,抽象不能直接实例化,只能用于被继承。因此,我们在示例创建了一个具体`ConcreteClass`来继承抽象,并实例化该具体对象来访问和使用抽象成员变量。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值