记得在一次面试的笔试题中,有的面试官会要求写出具体的像pullic这些访问限定符的作用域。其实,平常我都没去系统的考虑这些访问限定符的作用域,特别是包内包外的情况,OK,笔试不行了。
这是java基本的知识,也是公司看重的,那没办法啦,我的脑袋记不住东西,那我只能把这些东西写下来方便自己温故知新,不废话了,贴代码了。
代码如下:
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
|
package com.jaovo;
/**
*_1_ 成员变量访问权限的求证
* public private protected default(默认的权限)
*自己包自己类 可访问 可访问 可访问 可访问
*自己包别的类 可访问 不可访问 可访问 可访问
*别的包别的类 可访问 不可访问 不可访问 不可访问
*自己包别的类有继承关系 可访问 不可访问 可访问 可访问
*别的包别的类有继承关系 可访问 不可访问 可访问 不可访问
*---------------------------------------------------------------------------
*_2_ 成员方法访问权限的求证
* public private protected default(默认的权限)
*自己包自己类 可访问 可访问 可访问 可访问
*自己包别的类 可访问 不可访问 可访问 可访问
*别的包别的类 可访问 不可访问 不可访问 不可访问
*自己包别的类有继承关系 可访问 不可访问 可访问 可访问
*别的包别的类有继承关系 可访问 不可访问 可访问 不可访问
*/
import cn.jaovo.D;
import cn.jaovo.E;
//public class Chengyuan{
//public class Chengyuan extends C{
//public class Chengyuan extends D{
public class Chengyuan extends E{
public static void main(String[] args){
// 一 成员变量的权限访问
/*1 B b = new B();//自己包别的类
System.out.println( b.i1 );
System.out.println( b.i2 );
System.out.println( b.i3 );//i3可以在B中访问private
System.out.println( b.i4 );
*/
/*2 Chengyuan ch = new Chengyuan();//自己包自己类
System.out.println( ch.i1 );
System.out.println( ch.i2 );
System.out.println( ch.i3 );
System.out.println( ch.i4 );
*/
/*3 D d = new D();//别的包别的类
System.out.println( d.i1 );
System.out.println( d.i2 );//i2 在D中不是公共的;无法从外部程序包中对其进行访问
System.out.println( d.i3 );//i3可以在D中访问private
System.out.println( d.i4 );//i4可以在D中访问protected
*/
/*4 Chengyuan ch = new Chengyuan();//自己包别的类有继承关系Chengyuan extends C
System.out.println( ch.i1 );
System.out.println( ch.i2 );
System.out.println( ch.i3 );//i3可以在B中访问
System.out.println( ch.i4 );
*/
/*5 Chengyuan ch = new Chengyuan();//别的包别的类有继承关系Chengyuan extends D
System.out.println( ch.i1 );
System.out.println( ch.i2 );//i2在D中不是公共的;无法从外部程序包中对其进行访问
System.out.println( ch.i3 );//i3可以在D中访问private
System.out.println( ch.i4 );
*/
//======================================================
//二 成员方法的访问权限
/*1 Chengyuan ch = new Chengyuan();//自己包自己类
System.out.println( ch.m1() );
System.out.println( ch.m2() );
System.out.println( ch.m3() );
System.out.println( ch.m4() );
*/
/*2 B b = new B();//自己包别的类
System.out.println( b.m1() );
System.out.println( b.m2() );
System.out.println( b.m3() );//m3()可以在B中访问private
System.out.println( b.m4() );
*/
/*3 E e = new E();//别的包 别的类
System.out.println( e.m1() );
System.out.println( e.m2() );//m2在E中不是公共的;无法从外部程序包中对其进行访问
System.out.println( e.m3() );//m3可以在E中访问private
System.out.println( e.m4() ); //m4()可以在E中访问protected
*/
/*4 C c = new C();//自己包别的类有继承关系Chengyuan extends C
System.out.println( c.m1() );
System.out.println( c.m2() );
System.out.println( c.m3() );//m3()可以在C中访问
System.out.println( c.m4() );
*/
//5
Chengyuan ch = new Chengyuan();
System.out.println( ch.m1() );
System.out.println( ch.m2() ); //找不到符号
System.out.println( ch.m3() ); //找不到符号
System.out.println( ch.m4() );
}
}
class B{
//1 成员变量
public int i1 = 100 ;
int i2 = 200 ;
private int i3 = 300 ;
protected int i4 = 400 ;
//2 成员方法
public int m1(){ return 1 ;}
int m2(){ return 1 ;}
private int m3(){ return 1 ;}
protected int m4(){ return 1 ;}
}
class C{
//1 成员变量
public int i1 = 100 ;
int i2 = 200 ;
private int i3 = 300 ;
protected int i4 = 400 ;
//2 成员方法
public int m1(){ return 1 ;}
int m2(){ return 1 ;}
private int m3(){ return 1 ;}
protected int m4(){ return 1 ;}
}
//========================================================
//D.class文件和E.class文件在cn包内,为了方便把他们放到这里
package cn.jaovo;
public class D{
//1 成员变量
public int i1 = 100 ;
int i2 = 200 ;
private int i3 = 300 ;
protected int i4 = 400 ;
//2 成员方法
public int m1(){ return 1 ;}
int m2(){ return 1 ;}
private int m3(){ return 1 ;}
protected int m4(){ return 1 ;}
}
//-------
package cn.jaovo;
public class E{
//1 成员变量
public int i1 = 100 ;
int i2 = 200 ;
private int i3 = 300 ;
protected int i4 = 400 ;
//2 成员方法
public int m1(){ return 1 ;}
int m2(){ return 1 ;}
private int m3(){ return 1 ;}
protected int m4(){ return 1 ;}
}
|
以上代码是Java中成员方法与成员变量访问权限详解,希望大家喜欢。