天天看點

java修飾符

1--類修飾符

    1.1 public 公共類,一個類被聲明為public,表明它可以被所有其他的類所引用和通路。java中的類可以通過包的概念來組織,處于一個包中的類可以不需要任何說明而友善地互相通路和引用。而對于其他不再同一包中的類,一般來說,是不見的。當然也不鞥互相通路和引用。但是,如果被聲明public時,就具備了被引用和通路的條件,隻要import導入就ok了。

    1.2 預設的。一個類沒有修飾符,就是預設的。隻能被同一個包中的類互相通路和引用。不能被其他的類引用和通路。

    1.3 abstact 抽象類不能被執行個體化,隻有方法的聲明,而沒有方法體的實作。隻能通過子類來實作具體的功能。

    1.4    final 該類不能被繼承即沒有子類。

2--域修飾符

    2.1 非通路空孩子符

        2.11 static 靜态域,屬于類的公共域,為該類所有對象所共享。可以看作是全局變量

        2.12 final 常量,必須初始化(格式一般大寫)

        2。13 volatile 可被幾個線程所控制和修改。通常,olatile用來修飾接受外部輸入和域。如表示目前時間的變量将有系統線程随時修改,以保證程式取到目前系統時間。

    2。2 通路控制符

        2.21 public

        2.22 預設

        2.23 protected

        2.24 private

3---方法修飾符

    3。1 非通路控制符

        3.11 atstract

        3.12 static

        3.13 final

        3.14 native(可以調用其他語言(c,c++)等外部語言程式。

        3.15 synchronized(同步方法)線程的安全性。

    3.2 通路控制符

        3.21 public

        3.21 private

        3.23 protected

        3.24 預設(友好)

通路控制符權限具體如下:

1。public 權限最大的,不僅在同一包中,同一類中,而且在不同包中,也可以直接通路.(不同包中通路,必須import)。

程式如下:a。同一個類中就不說了,肯定可以通路自己類中的成員變量和成員方法,但是如果修飾符還有static,則應該差別對待。

        b。子類中。同一包,不同包中都開一被通路。

2。預設的 隻能被同一個包中的類通路和引用

3。protected 同一個類和同一個包中的類通路和引用

4。private 隻能被同一個類中通路自己的私有成員變量和方法

package pack1;

class Parent

{

    public String name;

    private String sex;

    protected String address;

    int age;                        //預設(友好)

    Parent(String s){    this.name=s;};

    public void setName(String s)

    {    this.name=s;    }

    public String getName()    

    {    return name;     }

    public void setSex(String sex)    

    {    this.sex=sex;    }

    public String getSex()

    {    return sex;}

    public void setAddress(String add)

    {    this.address=add;    }

    public String getAddress()

    {    return address;    }

    public void setAge(int a)

    {     this.age=a;    }

    public int getAge()

    {    return age;}

}

class Son extends Parent

    Son(String s)

    {

        super(s);

    }

public class ModificationPublicTest {

    public static void main(String[] args) {

    // TODO Auto-generated method stub

        //in the same package

        Parent par = new Parent("Lao Wu");

        System.out.println("Name:"+par.name);    //modification is public

        //System.out.println("Sex:"+par.sex);         //error: sex is private

        System.out.println("Address:"+par.address);//modification is protected

        System.out.println("Age:"+par.age);            // age is friendly

        //in the extends class(son class)

        Son son = new Son("Xiao Wu");

        System.out.println("Name:"+son.name);    //modification is public

        //System.out.println("Sex:"+par.sex);    //error sex is private

        System.out.println("Sex:"+son.getSex());//面象對象的封裝

        System.out.println("Address:"+son.address);//modification is protected

        System.out.println("Age:"+son.age);            // age is friendly

    }

package pack2;

import pack1.*;

public class ModificationTest {

    public static void main(String args[])

    {

        //Parent parOther = new Parent("Lao Li");    //error-->The type Parent is not visible

                                                    //beacuse The modification of parent class is friend(預設的)

        /* 是以修飾符為預設的類隻能被同一包中的類引用和通路

         * 而另外包中的類要引用和通路其它包中的類,被通路類必須是public

         */

非通路控制符如下:-----------------------------------------------------

1。final final可以修飾方法,成員變量和類

        a--》修飾成員變量是,可以在定義時指派,也可以在構造函數時指派。

        b--》修飾方法和類,表示該類或方法是不可擴充的。即不能extends。

2。abstract 抽象類(抽象類很多知識點)。

3。static 類變量或者類方法,可以直接通過類名調用,而不用生成對象。

4。native 本地方法,可以調用非java程式,完成特殊的功能

5。synchronized    synchronized 修飾符主要是用于多線程共存的程式中的協調和同步。

繼續閱讀