華為要出國產編程語言倉頡了!牛逼
一、訪問修飾符
寫了十幾年的代碼,用過幾種語言,Java最長。在對代碼封裝時,總是有一點遺憾:
Java訪問修飾符:public、protected、default、private四種,如下類Class2,有四個方法
轉載請注明原著:博客園老鍾 https://www.cnblogs.com/littlecarry/
Class2類所在包結構如下
package1、package2,是同級包,package10、package11是package1下的同級包
我期望,在方法的可見性上,同級包可見、上層包可見、其他級別包不可見,如:Class2有個方法,Class3可見(有權限調用)(同級包)、Class1可見(上層包),class4不可見、Class8不可見,
現在的java語法中
public 的testA(),Class1、Class3可見,Class8也可見、class4可見(所有包可見)
default 的testC(),僅Class3可見(同級包可見)
testB(), testD(),一樣都達不到這樣的要求
二、為什么會有這樣的需求呢?
比如app會訪問tcp、藍牙兩個網絡,網絡收發節點network1為tcp,network2為藍牙
network1為上層包,下面分為 recv、send包,分別負責tcp接收和發送
Net1Manager類,總管理發送和接收,是網絡節點1(tcp節點)對外的門面,所有對網絡節點1的操作,只能通過這個類,實現完美的封裝、隔離、內聚。
Receiver類(接收器)、Sender類(發送器)在不同的子包。
Sender類的sendData()方法,Net1Manager類是必須要調用的,所以只能是public,而這就導致(tcp節點的)sendData()方法對網絡節點2(藍牙節點)的Net2Manager類可見!這是不應該的!!!
三、總結
希望倉頡有一種修飾符,讓那個方法包內可見、上層包可見、其他包不可見,使得代碼能封裝得更好!