服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服务器之家 - 编程语言 - JAVA教程 - Java中成员方法与成员变量访问权限详解

Java中成员方法与成员变量访问权限详解

2020-01-03 14:36谷龙 JAVA教程

在Java学习过程中,在写类经常为用到public,private和protected,我个人的经验是一般类的成员变量都是用private,方法用public,类的内部用protected方法,如果是存在子类的,那我就会把父类中的成员变量变为protected。(其余的看具体实

记得在一次面试的笔试题中,有的面试官会要求写出具体的像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中成员方法与成员变量访问权限详解,希望大家喜欢。

延伸 · 阅读

精彩推荐