日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

c++ protected_合理使用protected关键字,确保类属性的安全性

發(fā)布時間:2024/9/19 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c++ protected_合理使用protected关键字,确保类属性的安全性 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

繼承和組合的選擇

我們之前學(xué)過,繼承是隱式的,組合是顯示的,其實實際當(dāng)中組合和繼承都可以在新的類里面放他們的子對象。不過區(qū)別是,組合中成員對象一般都是private修飾的,但是為了讓用戶直接訪問新類里面組合對象,就需要將組合的成員對象設(shè)置為public。

我們來看一個例子:

class E {

public void s(){}

public void r(){}

public void s(){}

}

class W {

public void i(int p){}

}

class WD {

public void ru(){}

public void rd(){}

}

class D {

public WD wd = new WD();

public void op(){}

public void cl(){}

}

public class C{

public E e = new E();

public W[] w = new W[4];

public D

l = new D(),

r = new D();

public C() {

for(int i = 0; i < 4; i++){

w[i] = new W();

}

}

public static void main(String[] args) {

C c = new C();

c.l.w.ru();

c.w.[0].i(60);

}

}

對于繼承而已,我們一般可以把它當(dāng)做公共類來用,也就是說導(dǎo)出類是專用類,基類是通用的公共類,也可以稱為通用類。

如何使用protected關(guān)鍵字

protected關(guān)鍵字的訪問權(quán)限是介于private和public之間的,比如有時候我們不想讓類的用戶訪問某個成員,但是又想讓導(dǎo)出類和同一個包里面的類訪問,那么就可以使用protected關(guān)鍵字來實現(xiàn)。但是通常我們不建議用protected關(guān)鍵字來修飾類的成員,一般建議用private關(guān)鍵字來修飾,確保類屬性的安全性,但是我們可間接使用protected方法來實現(xiàn)導(dǎo)出類和同一個包類的訪問權(quán)限。

我們來舉個例子看一下:

class V {

private String name ;

protected void set(String n){ name = n;}

public V (String name){ this.name = name}

public String toString(){

return “is ” + name;

}

}

public class C extends V{

private int or;

public C(String name, int or) {

super(name);

this.or = or;

}

public void change(String name,int or) {

set(name);

this.or = or;

}

public String toString(){

return “C ” + or+”: ” +super.toString();

}

public static void main(String[] args) {

C c = new C(“LL”,10);

print(c);

c.change(“B”,20);

print(c);

}

}

/*Output:

C 10: is LL

C 19: is B

通過這個例子我們可以看出,change()方法之所以可以調(diào)用方法set(),就是因為方法set()的訪問權(quán)限是protected。

除此之外,而且我們還可以看出導(dǎo)出類C里面的toString()方法重寫了基類的方法。

向上轉(zhuǎn)型

繼承的概念中,導(dǎo)出類可以看作是基類的一種類型。比如現(xiàn)在有一個樂器類I作為基類,還有一個吉他類J作為導(dǎo)出類,我們來看一下用這兩個類來書寫的例子,我們會理解的更加透徹:

class I {

public void play()

static void r(I i){

i.play();

}

}

public class W extends I {

public static void main(String[] args) {

W w = new W();

I.r(w);

}

}

在這個例子中我們看到,r()方法本應(yīng)該傳遞一個I類型的參數(shù),但實際卻傳遞了一個W類型的參數(shù),這很讓人費解,但是也沒有報錯。其實這塊進(jìn)行了一個向上的轉(zhuǎn)化,叫做向上轉(zhuǎn)型,也就是說將W類型轉(zhuǎn)為了I類型,是一個向上的過程。

向上轉(zhuǎn)型是屬于安全的轉(zhuǎn)型,但是在轉(zhuǎn)型的過程中,會丟失基類中沒有的方法。與向上轉(zhuǎn)型相反的就是向下轉(zhuǎn)型,也就是基類或者叫通用類轉(zhuǎn)為專用類或者叫導(dǎo)出類。

講到這里,我們都知道,繼承和組合都可以復(fù)用代碼,但是什么時候使用繼承,什么時候使用組合,這就需要分析一下,我們需要向上轉(zhuǎn)型不,如果需要向上轉(zhuǎn)型,就要使用繼承,如果不需要向上轉(zhuǎn)型,那就最好不要用繼承。

總結(jié)

以上是生活随笔為你收集整理的c++ protected_合理使用protected关键字,确保类属性的安全性的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。