java内部类与单例模式
java中不允许外部类使用 private,protected 修饰
所谓的外部类:就是在源码中直接声明的类
所谓的外部类: 就是类中声明的类
内部类就当成外部类的属性,所以需要构建外部类对象才可以使用
public class study01 {
public static void main(String[] args) {
System.out.println("main");
// 内部类就当成外部类的属性,所以需要构建外部类对象才可以使用
Person p = new Person();
Person.PersonGrid PersonGrid = p.new PersonGrid();
}
}
// 外部类 Person
class Person {
// 内部类 PersonGrid
public class PersonGrid {
}
}
私有构造,new的时候会报错
public class study01 {
public static void main(String[] args) {
System.out.println("main");
// 因为下面的是私有的。所以new的时候会报错
User p = new User(); // 报错
}
}
class User{
// 私有的,是有在当前类中才可以被访问
private User (){
}
}
protected 受保护的。在同类,同包(包路径相同),子类中可以访问
package studyDemo9yue;
public class study01 {
public static void main(String[] args) {
System.out.println("main");
// 受保护的。在同类,同包(包路径相同),子类中可以访问
User p = new User(); // 正常的
}
}
class User{
// 受保护的。在同类,同包(包路径相同),子类中可以访问
protected User (){
}
}
JVM默认给类提供的构造方法,就是公共的public,无参的构造方法
类的创建过程复杂
类的对象消耗资源
成员对象,方法需要被new 才可以使用
静态方法不能直接方法成员属性,但是成员方法是可以访问静态属性。
类的对象消耗资源
package studyDemo9yue;
public class study01 {
public static void main(String[] args) {
System.out.println("main");
// 创建多个实例对象, 现在这样创建的实例对象仍然是消耗内存的
User u1 = User.getUser();
User u2 = User.getUser();
}
}
class User{
// 成员方法
private User () {
};
// 静态方法
public static User getUser() {
return new User();
}
}
单例模式
我们知道像上面那样去创建很多对象的时候;是非常消耗资源的。
现在我们希望去解决这个问题。
单例模式就出来了
package studyDemo9yue;
public class study01 {
public static void main(String[] args) {
// 创建多个实例对象, 现在这样创建的实例对象仍然是消耗内存的
User u1 = User.getUser();
User u2 = User.getUser();
// == 比较的是内存中的地址哈
System.out.println(u1 == u2); // true
}
}
class User{
// 静态属性,为什么这里写静态属性?因为静态方法中不能获取成员属性
private static User User = null;
//成员方法
private User () {
};
// 静态方法
public static User getUser() {
if(User == null){
User= new User();
}
return User;
}
}
作者:流年少年
出处:https://www.cnblogs.com/ishoulgodo/
本文版权归作者所有,欢迎转载,未经作者同意须保留此段声明,在文章页面明显位置给出原文连接
如果文中有什么错误,欢迎指出。以免更多的人被误导。
出处:https://www.cnblogs.com/ishoulgodo/
想问问题,打赏了卑微的博主,求求你备注一下的扣扣或者微信;这样我好联系你;(っ•̀ω•́)っ✎⁾⁾!
如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,或者关注博主,在此感谢!
万水千山总是情,打赏5毛买辣条行不行,所以如果你心情还比较高兴,也是可以扫码打赏博主(っ•̀ω•́)っ✎⁾⁾!
想问问题,打赏了卑微的博主,求求你备注一下的扣扣或者微信;这样我好联系你;(っ•̀ω•́)っ✎⁾⁾!
![](http://images.cnblogs.com/cnblogs_com/IwishIcould/1900124/t_201214043958支付宝收款码.jpg?a=1607924145179)
支付宝
![](http://images.cnblogs.com/cnblogs_com/IwishIcould/1900124/t_20121604194271E6E296CCB71A007F4E22073D5EB64A.jpg)
微信
如果文中有什么错误,欢迎指出。以免更多的人被误导。