参考答案

访问修饰符public、private、protected,以及不写(默认)时的区别?写代码验证

【参考答案】java基础练习:访问修饰符、非访问修饰符_私有方法

代码略。

 

练习:如何访问非本类的private修饰的属性、方法?

package com.qzcsbj;

import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.Arrays;

public class Test {
public static void main(String[] args) {
Person p = new Person("jack", 18);
Field[] fields = Person.class.getDeclaredFields();
Method[] declaredMethods = Person.class.getDeclaredMethods();

System.out.println(Arrays.toString(fields));
System.out.println(Arrays.toString(declaredMethods));

// 获取私有属性
for (int i = 0; i < fields.length; i ++) {
fields[i].setAccessible(true);
System.out.println("第"+(i+1)+"个私有属性:" + fields[i].getName());
}

// 获取私有方法
for (int j = 0; j < declaredMethods.length; j ++) {
declaredMethods[j].setAccessible(true);
System.out.println("第"+(j+1)+"个私有方法:" + declaredMethods[j].getName());

try {
Object o = declaredMethods[j].invoke(p);
System.out.println("调用第"+(j+1)+"个私有方法的返回结果是:" + o);
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
}
}
}

class Person{
private String name;
private int age;

public Person(String name, int age) {
this.name = name;
this.age = age;
}

private String getName() {
return name;
}

private int getAge() {
return age;
}
}

 

下面输出结果是?

package com.qzcsbj;

/**
* @公众号 : 全栈测试笔记
* @描述 : <>
*/
public class Test {
public static void main(String[] args) {
Person.test(2);
}
}

class Person {
public static void test(final int m){
final int n =1;
n=2; // 报错
System.out.println(n);
m=3; // 报错
System.out.println(m);
}
}

 

final标记的变量即成为常量,只能赋值一次。

 


 

__EOF__


本文作者:持之以恒(韧)