java 访问权限

Java中的访问权限分为public、private、default和protected四种。public是公共的,可任意访问;private是私有的,只在本类中可用;default是包内可见;protected对子类和同包可见。内部类可以视为外部类的属性,需要外部类对象来实例化。单例模式用于控制类的实例化,确保只有一个实例存在。
摘要由CSDN通过智能技术生成
面向对象 - 访问权限
public:公共的 , 访问权限修饰符
Java的源码中,公共类只能有一个,而且必须和源码文件名相同
main方法:main方法是JVM调用的,JVM调用时可以任意调用,而不用考虑权限问题
Java中访问权限主要分为4种:
 1.private:私有的,同一个类中可以使用
 2.(default):默认权限,当不设定任何权限时,JVM会默认提供权限,包(路径权限)权限
 3.protected:受保护的权限,子类可以访问
 4.public:公共的,任意使用
        User17 user = new User17();
        //System.out.println(user.name); //私有的,无法使用
        System.out.println(user.username);
        System.out.println(user.sex);
        System.out.println(user.age);


       class User17 {
       private String name;
       public String username;
       String sex;
       protected int age;
       void test() {
        System.out.println(name);
        System.out.println(age);
        System.out.println(username);
    }
private : 同类
default : 同类,同包(路径)
protected : 同类,同包,子类
public : 公共的
 所谓访问权限,就是访问属性,方法的权力和限制
 谁访问? Java17_Object_Access_1 -> super -> java.lang.Object
 访问谁的? Person17 -> super -> java.lang.Object
Person17 person = new Person17();

class Person17 {
    void test() throws Exception {
        clone();
    }
面向对象 - 外部类 - 内部类
Java中不允许外部类使用private,protected修饰
所谓外部类就是在源码中直接声明的类
所谓内部类就是类中声明的类

内部类就当成外部类的属性使用即可
因为内部类可以看作是外部类的属性,所以需要构建外部类对象才可以使用
OuterClass outer = new OuterClass();
        OuterClass.InnerClass innerclass = outer.new InnerClass();   

//outer.new.InnerClass.var
    }

}
class OuterClass {
    public class InnerClass {

    }
}

单例模式

JVM默认给类提供的构造方法,其实就是公共的,无参的构造方法

1.类的创建过程复杂 

2.类的对象消耗资源

        User19 instance1 = User19.getInstance();
        User19 instance2 = User19.getInstance();
        User19 instance3 = User19.getInstance();
        User19 instance4 = User19.getInstance();
        User19 instance5 = User19.getInstance();
        User19 instance6 = User19.getInstance();

class User19 {
     private static User19 user19 = null;
     private User19() {

    }
    public static User19 getInstance() {
         if( user19 == null ) {
             user19 = new User19();
         }
         return user19;
    }
}
 // 判断两对象的内存地址是否相等
        System.out.println(instance1 == instance6);
        System.out.println(instance1.equals(instance5));

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值