zoukankan      html  css  js  c++  java
  • 怎么证明接口内所有方法都自动是public的

    接口是只是特殊的抽象类,它不包含普通方法,只包含抽象方法。而这些抽象方法就是多个类共同的公共行为规范,需要类去遵守,这些行为是与外部交流的通道,这就意味着接口通常定义的都是公共的用法,接口只关心这些类有没有遵守这些方法,而不去关心这些类的内部数据,也不关心这些类的方法实现细节。打个比方来说,接口就是一个公司的规章制度,部门就是类,那规章制度都是公开的要求大家遵守的,不可能把它私有起来不让别人看吧,那就没有意义了。

    那怎么证明呢,可以用反射。

    定义接口文件

    package com.zhangqi.jvm;
    
    import java.util.Date;
    
    public interface ITest {
    	
    	double PI = 3.14;
    	Date CREATE_TIME = new Date();
    	
    	void play();
    	String getName();
    }
    

    接下来,测试方法来反射获取静态变量和方法。

    package com.zhangqi.jvm;
    
    import java.lang.reflect.Field;
    import java.lang.reflect.Method;
    
    public class ReflectTest {
    
    	public static void main(String[] args) throws ClassNotFoundException {
    
    		// 加载com.zhangqi.jvm.ITest类文件
    		Class<?> clazz = Class.forName("com.zhangqi.jvm.ITest");
    		
    		// 获取类中所有方法
    		Method[]  methods = clazz.getDeclaredMethods();
    		
    		// 遍历每个方法,并输出该方法
    		for (Method method : methods) {
    			System.out.println(method.toString());
    		}
    		
    		System.out.println("~~~~~~~~~~~~~~~~~~~~~");
    		
    		// 获取类中所有静态变量
    		Field[] fields = clazz.getDeclaredFields();
    		
    		// 遍历所有常量
    		for (Field field : fields) {
    			System.out.println(field);
    		}
    	}
    }
    

    执行之后得到结果如下:

    public abstract java.lang.String com.zhangqi.jvm.ITest.getName()
    public abstract void com.zhangqi.jvm.ITest.play()
    ~~~~~~~~~~~~~~~~~~~~~
    public static final double com.zhangqi.jvm.ITest.PI
    public static final java.util.Date com.zhangqi.jvm.ITest.CREATE_TIME
    

      

  • 相关阅读:
    C if语句判断年龄
    C 计算时间差
    C 计算身高
    JRebel激活破解完美解决方式
    Maven optional和scope
    判断当前时间是否在某个时间段内
    给定时间加上几个小时
    RabbitMQ学习笔记
    浏览器、服务器会话
    Maven核心知识点梳理
  • 原文地址:https://www.cnblogs.com/boucher/p/5682140.html
Copyright © 2011-2022 走看看