证明接口interface中定义的方法的访问权限为public

如题,证明Java中接口文件中定义的方法访问权限为public。

众所周知,接口中的方法默认是public abstract 类型的,它必须由子类实现之。那怎么证明呢,反射。

定义接口文件

package com.zhangqi.jvm;

import java.util.Date;

public interface ITest {

	double PI = 3.14;
	Date CREATE_TIME = new Date();

	void play();
	String getName();
}

接口文件中定义两个静态常量PI 和 CREATE_TIME ,两个方法 play 和 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

从而证明,静态变量的修饰词为
public static final

方法的修饰为
public abstract

时间: 2024-10-08 05:32:51

证明接口interface中定义的方法的访问权限为public的相关文章

Java中定义常量方法及建议(Class/Interface)

Class定义常量方法(推荐方法) //final修饰符 public final class Constants { //私有构造方法 private Constants() {} public static final int ConstantA = 100; public static final int ConstantB = 100; ...... } 采用“类.常量名”方法进行调用.需要私有化构造方法,避免创建该类的实例.同时不需让其他类继承该类. 如果多处需要访问工具类中定义的常量

vue(ref父组件使用子组件中定义的方法)

一.前言 二.主要内容 1.实现效果(其实可以直接在父组件中操作子组件的显示隐藏,但是这里通过在子组件定义自己的显示隐藏效果,让父组件调用,训练一下这种方式) 2.分析: (1)点击父组件的某一个li项,跳出这个商品详情(子组件项) (2)子组件中还是需要接收到父组件中的food,但是这个food不像上一篇那样是固定的,所以这里的这个food是根据我们点击的不同的项,传进去的 (3)为了实现上一步分析:我们需要在data中定义一个对象,点击的时候,将当前对象的food传进去,然后在传给子组件,这

override(重写,覆盖) 1、方法名、参数、返回值相同。 2、子类方法不能缩小父类方法的访问权限。 3、子类方法不能抛出比父类方法更多的异常(但子类方法可以不抛出异常)。 4、存在于父类和子类之间。 5、方法被定义为final不能被重写。 overload(重载,过载) 1、参数类型、个数、顺序至少有一个不相同。 2、不能重载只有返回值不同的方法名。 3、存在于父类和子

override(重写,覆盖) 1.方法名.参数.返回值相同. 2.子类方法不能缩小父类方法的访问权限. 3.子类方法不能抛出比父类方法更多的异常(但子类方法可以不抛出异常). 4.存在于父类和子类之间. 5.方法被定义为final不能被重写. overload(重载,过载) 1.参数类型.个数.顺序至少有一个不相同.   2.不能重载只有返回值不同的方法名. 3.存在于父类和子类.同类中. 方法的重写(Overriding)和重载(Overloading)是Java多态性的不同表现. 重写(O

java中4种修饰符访问权限的区别及详解全过程

java中4种修饰符访问权限的区别及详解全过程 http://jingyan.baidu.com/article/fedf0737700b3335ac8977ca.html java中4中修饰符分别为public.protect.default.private,他们这就说明了面向对象的封装性,所以我们要适用他们尽可能的让权限降到最低,从而安全性提高. 下面详细讲述下它们的访问权限问题.(同一个类中除内部类外所有修饰符都是可以访问的,所以下面排除这种情况.) 首先在这里把它们的访问权限表示出来:

Java基础知识强化17:JAVA不可以将所覆盖的方法的访问权限变得比父类的小

首先我们看一下下面的代码如下: 1 interface I { void go(); } 2 abstract class A implements I { } 3 4 class C extends A { 5 void go(){ System.out.println("I love you!"); } 6 } 在线编译出现如下报错: 分析: 出现这个错误的原因是: 接口的方法默认修饰符是:public abstract 这里实现的go( )方法的修饰符是default,访问权限降

Objective-C 类属性和方法的访问权限

OC中提供了4种访问权限,@private, @public, @protected这三种和其他的C++, Java是一样的,@package这个访问权限并不是Java里的包访问权限,OC中没有包的概念,这个是框架级的访问权限,在当前的framework的类中视为@protected,在框架以外的类中访问被视为@private. // // Goods.h // 05_Self // // Created by apple on 14-11-10. // Copyright (c) 2014年

14 接口-interface的定义与实现

接口的基本语法一: 1.使用interface 定义 2.接口当中的方法都是抽象方法 3.接口当中的方法都是public权限 接口的定义: interface USB { public void read(); public void write(); } 接口的实现: class USBPhone implements USB { public void read() { System.out.println("USBPhone read"); } public void write

action中定义的方法能不能带参数?

今天在使用Struts2.0做登录时,突然出现java.lang.NoSuchMethodException的问题, 检查了许久发现是在Action中在定义方法出现问题,自定义的方法是不能带参数的,可以通过别的方式去带一些动态的参数值,xxx.action?param=xxxx,用Request去取这个参数.如果你带了参数,在页面要执行方法时会找不到此方法,就会出现上面的错误. Struts2中Action接收参数的方法主要有以下三种:1.使用Action的属性接收参数:    a.定义:在Ac

子组件中定义的方法如何传给父组件调用了呢?

//Food组件(是一个一般组件,就是弹出来那个食物的图片) 父组件中调用子组件对象的方法: 1.要得到子组件对象 通过给子组件 指定ref="Food" 2.在子组件中定义自己的方法: 3.在需要调用的地方: 父向子传递使用props 原文地址:https://www.cnblogs.com/hou-yuan-zhen/p/11740968.html