在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ Java/ Java訪問修飾符
Java for循環(huán)
Java接口
Java是什么?
Java命名約定
java中方法重載和方法重寫的區(qū)別
Java運算符
Java抽象類
Java快速入門
Java實例初始化程序塊
Java靜態(tài)綁定和動態(tài)綁定
Java do-while循環(huán)
Java對象克隆
Java Object類
Java聚合
Java繼承
Java this關鍵字
Java虛擬機內部體系結構
Java構造器(構造方法)
Eclipse安裝和配置
Java多態(tài)
Java方法重載
Java while循環(huán)
Java教程
Java按值調用和引用調用
Java strictfp關鍵字
Java封裝
Java語言特點
Java數(shù)組
Java instanceof運算符
Java包裝類
Java命令行參數(shù)
Java包
Java面向對象(OOP)概念
簡單Java程序
Java基礎實例程序
Java對象和類
Java continue語句
Java抽象類和接口的區(qū)別
C++ VS Java比較
Java if/else語句
Java switch語句
Java歷史
Java變量和數(shù)據類型
安裝Java環(huán)境(Linux)
Java JDK安裝和配置
Hello Java程序的內部細節(jié)
Java break語句
Java方法重寫
Java Unicode編碼系統(tǒng)
怎么樣開始學習Java編程?
對象和類之間的區(qū)別
Java訪問修飾符
Java super關鍵字
Java注釋
JDK,JRE和JVM之間的區(qū)別
Java final關鍵字
Java static關鍵字

Java訪問修飾符

java中有兩種類型的修飾符:訪問修飾符和非修飾符。
java中的訪問修飾符指定數(shù)據成員,方法,構造函數(shù)或類的輔助功能(范圍)。
一共有4種類型的java訪問修飾符:

  • private
  • default
  • protected
  • public

有許多非訪問修飾符,如:static, abstract, synchronized, native, volatile, transient等修飾符。這里,我們將只學習訪問修飾符。

private訪問修飾符

私有(private)訪問修飾符只能在類中訪問。

private訪問修飾符的簡單示例

在這個例子中,我們創(chuàng)建了兩個類:ASimple。 類包含私有數(shù)據成員和私有方法。 我們從類外訪問這些私有成員,所以會產生編譯時錯誤。

class A {
    private int data = 40;

    private void msg() {
        System.out.println("Hello java");
    }
}

public class Simple {
    public static void main(String args[]) {
        A obj = new A();
        System.out.println(obj.data);// 私有變量,不可以從外部類中直接訪問,因此有編譯錯誤
        obj.msg();// 私有方法,不可以從外部類中直接訪問,因此有編譯錯誤
    }
}

1. private訪問修飾符

如果將類的構造函數(shù)聲明為私有,則不能從類外部創(chuàng)建該類的實例。 例如:

class A {
    private A() {
    }// private constructor

    void msg() {
        System.out.println("Hello java");
    }
}

public class Simple {
    public static void main(String args[]) {
        A obj = new A();// Compile Time Error
    }
}

注意:類不能是私有或保護,除非是嵌套類。

2. default訪問修飾符

如果不使用任何修飾符,默認情況下將其視為default修飾符。default修飾符只能在包內訪問。

default訪問修飾符示例

在這個例子中,我們創(chuàng)建了兩個包packmypack。從它的包外部訪問A類,因為一個類不是public的,所以它不能從包外部訪問。如下兩個類:A.javaB.java 代碼。

//save by A.java  
package pack;  
class A{  
    void msg(){System.out.println("Hello");}  
}

B.java 代碼的代碼如下 -

//save by B.java  
package mypack;

import pack.*;

class B {
    public static void main(String args[]) {
        A obj = new A();// Compile Time Error
        obj.msg();// Compile Time Error
    }
}

在上面的例子中,A類的范圍和它的方法msg()是默認(default)的,所以它不能從包外部訪問。

3. protected訪問修飾符

protected訪問修飾符可以在包中和包外部訪問,但只能通過繼承。protected訪問修飾符可以應用于數(shù)據成員,方法和構造函數(shù)。 它不能應用于類。

protected訪問修飾符的示例

在這個例子中,我們創(chuàng)建了兩個包packmypack。 A類的包是public的,所以可以從外部訪問包。 但是這個包的msg方法聲明為protected,因此只能通過繼承從類外面訪問它。如下兩個類:A.javaB.java 代碼。

//save by A.java  
package pack;

public class A {
    protected void msg() {
        System.out.println("Hello");
    }
}

B.java 代碼如下 -

//save by B.java  
package mypack;

import pack.*;

class B extends A {
    public static void main(String args[]) {
        B obj = new B();
        obj.msg();
    }
}

執(zhí)行上面代碼,得到如下結果 -

Hello

4. public訪問修飾符

公共(public)訪問修飾符可隨處訪問。 它在所有其他修飾符中具有最廣泛的范圍。

public訪問修飾符示例

如下兩個類:A.javaB.java 代碼。

A.java 的代碼

//save by A.java  

package pack;

public class A {
    public void msg() {
        System.out.println("Hello");
    }
}

B.java 的代碼

//save by B.java  

package mypack;

import pack.*;

class B {
    public static void main(String args[]) {
        A obj = new A();
        obj.msg();
    }
}

執(zhí)行上面的代碼,得到以下結果 -

Hello

理解所有java訪問修飾符

讓我們通過下面的一個簡單的表來理解訪問修飾符。

訪問修飾符 在類內 在包內 外部包只通過子類 外部包
Private Y N N N
Default Y Y N N
Protected Y Y Y N
Public Y Y Y Y

如果你要覆蓋任何方法,重寫的方法(即在子類中聲明)則不能聲明得更嚴格。

class A {
    protected void msg() {
        System.out.println("Hello java");
    }
}

public class Simple extends A {
    void msg() {
        System.out.println("Hello java");
    }// C.T.Error

    public static void main(String args[]) {
        Simple obj = new Simple();
        obj.msg();
    }
}

默認(default)修飾符比受保護的修飾符更嚴格。 這就是為什么有編譯時錯誤。


下一篇:Java包