Thinking in Java第六章(访问权限控制)查漏

1.静态导入(static import)

  • 是用来减少代码繁琐程度的,,但是是以可读性为代价。
  • 是针对具体的静态方法来使用的,静态变量是不行的。。普通的导入是针对具体的类来使用的。额,,还是上代码说明吧。。
package Demo1
public class Print(){
	public static void print(Object obj){
		System.out.println(obj);
	}
}
package Demo2
import static Demo1.Print.print;
//格式:包名.类名.具体方法(全部方法也可以用*代替);
//变量可不能这么用,,静态导入必须具体到方法,,否则会报错的。。。
public class Hello{
	public void a(){
		print("Hello world");
		//直接使用我们导入的print方法即可。
	}
}

2.权限修饰符

记住这张表就够了

public protected 默认(包访问权限) private
同类
同包 ×
不同包子类 × ×
不同包非子类 × × ×

然后就无了。。。。em。。嘶~~关于private有句话很费解。。
类既不可以是private,也不可以是protected,仅有两个权限,public和包内访问权限。
简单解释一下:

  • 如果我们不希望该类被别人访问,我们可以将构造方法用private进行修饰,从而阻止别人创建该类的对象。
    上代码:
package Demo
class Soup1{
	private Soup1(){
		...
	}
	static Soup1 makeSoup1(){
		return new Soup1();
	}
} 

对比两种返回对象的方式其实也没啥不同的,,一个返回的是对象的引用,一个是直接创建对象返回。
主要是第二种,,运用到了设计模式,他的对象只有一个s2.。。。妙啊。

package Demo
class Soup2{
	private Soup2(){
		...
	}
	private static Soup2 s2 = new Soup2();
	static Soup2 makeSoup2(){
		return s2;
	}
}
public class Test{
	void TestSoup1(){
		Soup1 s1 = Soup1.makeSoup1();
	}
	void TestSoup2(){
		Soup2 s2 = Soup2.makeSoup2();
	}
}

。。。没啥说的这个代码,,,主要是记住这个模式。。。

Over
在这里插入图片描述

展开阅读全文
©️2019 CSDN 皮肤主题: 1024 设计师: 上身试试
应支付0元
点击重新获取
扫码支付

支付成功即可阅读