1. 程式人生 > 其它 >Java訪問許可權控制符

Java訪問許可權控制符

Java訪問許可權控制符

1.訪問控制權限都有哪些?

4個

  • private 私有

  • public 公開

  • protected 受保護

  • 預設(什麼都不寫) eg.

public class User{
// 私有的
private int id;
// 受保護的
protected int age;
// 公開的
public int weight;
// 預設的
String name;
}

2.以上的4個訪問控制權限:控制的範圍是什麼?

  • private 表示私有的,只能在本類中訪問

  • public 表示公開的,在任何位置都可以訪問

  • “預設”表示只能在本類,以及同包下訪問。

  • protected表示只能在本類、同包、子類中訪問。

訪問控制修飾符本類同包子類任意位置
public 可以 可以 可以 可以
protected 可以 可以 可以 不行
預設 可以 可以 不行 不行
private 可以 不行 不行 不行

範圍從大到小排序:public > protected > 預設 > private

3.訪問控制權限修飾符可以修飾什麼?

  1. 屬性(4個都能用)

  2. 方法(4個都能用)

  3. public預設能用,其它不行。)

  4. 介面public預設能用,其它不行。)

注:介面和類只有public和預設可以用!

eg.

//錯誤: 此處不允許使用修飾符private
/*
private class MyClass1{
}
*/

//錯誤: 此處不允許使用修飾符protected
/*
protected class MyClass1{
}
*/
package com.baidu;

public class User{
// 私有的
private int id;
// 受保護的
protected int age;
// 公開的
public int weight;
// 預設的
String name;

// 方法
public void m1(){}
private void m2(){}
void m3(){}
protected void m4(){}

// 靜態方法也可以。
public static void x(){}
private static void y(){}
static void z(){}
protected static void k(){}
}

class MyClass1{
}

同包:

package com.baidu;

public class Test01{
public static void main(String[] args){
User user = new User();
// private修飾的元素只能在本類中用。
//System.out.println(user.id);//報錯
System.out.println(user.age);
System.out.println(user.weight);
System.out.println(user.name);
}

不同包:

package com.baidu2; // 包變化了。

import com.baidu.User;

public class Test02{
public static void main(String[] args){
User user = new User();

// 錯誤:protected在這裡不行。
//System.out.println(user.age);

// 可以:公開的,在哪都行。
System.out.println(user.weight);

// 錯誤:“預設”在這裡也不行。
//System.out.println(user.name);
}
}

不同包且繼承:

package com.baidu3; // 包變化了。

import com.baidu.User;

// User在com.baidu包下。
// Vip在com.baidu3包下。
// User和Vip不在同一個包下。
// 但是Vip是User的子類。
public class Vip extends User{
//例項方法
public void shopping(){
// this表示當前物件
// protected可以
System.out.println(this.age);
// 錯誤:預設 不行。
//System.out.println(this.name);//報錯
}
}