Java學習之類的屬性

來源:互聯網
上載者:User

Public、private、protected顯示了三種類中的屬性和服務的類型,public是可以隨意訪問的、private是外界不能訪問的(顯示了資料的封裝性)、protected說明資料是受保護的。下面就來詳細講述一下這三個究竟有什麼區別。

首先要瞭解一下包的概念。有若干個類,它們相互之間有一定的關係,那麼就可以定義一個包容納這些類,包不僅僅只能包含類,它可以擁有類、介面、構件、節點、協作,包內還可以包含包。

現在就讓我們來具體討論一下這三個種類的不同之處。

 
 
作為public的類和屬性是可以被外界任意調用的,無論是在類中,還是跨越類的訪問(如果不屬於同一個包,就要調用import語句,添加包名),這一點是非常好理解的。

       Private的屬性和方法是最自私的,它定義的屬性和方法只能在本類中使用,到類外,是無論如何都不能被使用的,如:

class Date

{

private int day;

public void tomorrow()

{

this.day = this.day + 1;

}

}

public class DateUser

{

public static void main(String args[])

{

Date mydate = new Date();

mydate.day = 21; //注意這句話是錯的

}

}

 

在這個程式中,建立了一個Date類的對象mydate,這是可以的,但是由於類Date中的day是私人變數,所以,建立的這個對象mydate不能通過mydate.day來訪問這個屬性,如果在其它類中要使用這個私人變數,那麼只能通過Date中的public的方法來訪問這個屬性,這樣,就很好的保證了資料的封裝性,就像物件導向中提到的報刊亭的故事一樣,購買報刊的人不能自己伸手進去拿報紙或是找零錢,而只能由報刊亭內部人員來處理這些事情一樣。在上面的例子中,大家可以發現,類Date中的預設方法(Date())並沒有定義它的類型,這就意味著它是友好的,也就是意味著它在本包內是public的,而在外包內是private的。但是一旦把它的類型定義為private,那麼連Date mydate = new Date()也會出錯,這是因為預設的構建器已經被定義為private類型,也就是即使是本包內的其他類也不能訪問了。

 
 

       對於protected就要考慮到包的概念,如果有兩個類,如:Date和DateUser兩個類分別位於不同的包內,而DateUser是繼承Date類的一個類,那麼如果要使DateUser中的方法訪問Date中的方法或屬性,除了使用import將包匯入,還需要考慮所要訪問的方法和屬性是什麼類型的,一般而言,跨包訪問,public的方法和屬性都一定可以訪問,但是考慮到如果將需要使用的方法和屬性都修改成public的話,那麼就可以允許任何事物訪問,就不具有安全性,為了這個事情的考慮,添加了protected,如果將需要訪問的方法和屬性定義為protected,那麼其它的類無法訪問,而外包的DateUser通過import就可以訪問這些屬性和方法了,即保證了資料的安全性,也保證了資料被很好的使用。範例如下:

       package a.b;

       public class Sample

       {

              protected void doing();

}

import a.b.*;

public class Sample1 extends Sample

{

       public static void main(String args[])

       {

              Sample1 x=new Sample1();

              x.doing();

}

}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.