小黄鸭系列java基础知识 | 访问控制

2021-03-02 01:26

阅读:494

标签:任务   个人   pac   on()   子类   out   static   main   权限控制   

前言

小伙伴,新年过得可好呀!好多小伙伴可能已经上了三天班了,比如我,你们感觉怎么样呢?反正,上班这三天,我是极其不在状态,每天都恍恍惚惚的,这可能就是假期综合症的表现。但是我觉得这也不能怪我,目前的工作确实没什么挑战,工作本身能带给我的成就感也很有限,而且有时候还会引发我的吐槽和牢骚,毕竟现在项目上的工作确实太混乱,进度没有人跟进,需求没人对接,除了政治性的任务,其他的工作客户也不管不顾,感觉大家都像无头苍蝇一样,浑浑噩噩,恍恍惚惚,以前针对这些问题,我有反馈过也提过建议,但最后都不了了之,而且目前管理确实混乱,准确地说没有管理。我已经在准备换个新的环境,开始新的有挑战的生活,毕竟我还是太弱了,能量有限,改变不了目前项目的情况,所以如果有小伙伴在纠结要不要换工作,不要犹豫了,大胆地换,大胆地走出去,多尝试,多经历,环境带给你的改变真的超出你的想象。

正文

今天我们要回顾的知识点是java的访问控制,访问控制简单来讲就是权限控制,就是控制方法、属性、类的访问权限,比如你不想外部类访问你当前类的属性,你可以在当前类对应的属性上加上private关键字,这样在当前类之外,就无法访问这个属性,今天我们讲的就是这些关键字。

访问控制

Java中主要有以下几种访问权限:

private

private表示私有的,凡是private修饰的变量、方法、类(只能修饰内部类),只能在当前类中使用,就像你的个人私有的东西一样,只能你自己私有的东西,概不外借,比如内衣??。所以,private是最小的访问控制权限

class Me {
    private String name;
    private String age;
}

默认

这里默认指的是不加任何修饰符,在前面的示例中,我们定义的所有变量基本上都没有加修饰符,对于这类变量、方法和类,只允许当前类和同包下的类访问。

我也忘记前面有没有讲过这个概念,这里补充说明下,包是java中的一种管理方式,就是为了保证类的唯一性,毕竟同名在实际代码开发中是一个普遍现象,而对于我等爱码士,命名也是个世纪难题,但如果加上包名,就可以很好地保证类的唯一性。我们在实际开发中,在创建一个类的时候,是需要指明类的包名的:

package io.github.syske.learning;

class Me {
    private String name;
    private String age;
    
    int height;
    double weight;
}

包名写在一个类的最开始,用package修饰,具体语法如下:

package 包名

包名一般是域名反写,然后在加上一些分类描述,比如我上面的包名,就是我GitHub的个人页面域名的反写,learning是我自己加的分类。

再回到访问控制的话题上,比如我同包下有一个名为You的类,这时候因为我的Me类中有两个没有加修饰符的属性heightweight,在You中是可以直接访问.

package io.github.syske.learning;

public class You {
    public static void main(String[] args) {
        Me me = new Me();
        System.out.println(me.height);
        System.out.println(me.weight);
    }
}

protected

protected受保护的,可以简单理解为有条件的访问控制,它修饰的属性、方法、类,除了他自己、同包下类可以访问,继承它的子类也可以访问。因为到这里,我们还没有讲继承的知识点,所以大家先记住这个知识点,后面会补充的。

package io.github.syske.learning;

class Me {
    protected double money;
}

MySon继承了Me,所以可以直接访问由protected修饰的money

package io.github.syske.learning;

public class MySon extends Me {
    public static void main(String[] args) {
        MySon son = new MySon();
        System.out.println(son.money);
    }
}

public

public公共的,他是最友好的访问控制,由它修饰的类、方法、属性,允许任何人访问和使用,就像公共汽车一样,人人都可以乘坐。

package io.github.syske.learning;

public class You {
    public String name;
}

访问控制补充

访问修饰符 本类 同包 子类 其他
private × × ×
默认 × ×
protected ×
public
  1. 外部类不能直接使用内部类的成员变量和方法,可以通过先创建内部类的对象,然后通过内部类的实例对象来访问其成员变量和方法;

  2. 如果外部类和内部类具有相同的成员变量或方法,内部类默认访问自己的的成员变量或方法,如果访问外部类的成员变量,可以使用 this.成员变量名 或者 this.方法() 来访问;

  3. java中的静态内部类

(1)静态内部类不能直接访问外部的非静态成员,但可以通过new 外部类().成员的方式访问;

(2)如果外部类的静态成员与内部类的成员名称相同,可以通过类名.静态成员的方式访问;如果外部类的静态成员与内部类的成员名称相同,则可以通过成员名直接调用外部类的静态成员;

(3)创建静态内部类的对象时,不需要外部类的对象,可以直接创建内部类:对象名 = new 内部类();

  1. 访问权限:

当用某个类在另外一个类中创建对象后,如果不希望该类对象直接访问自己的变量(即不能直接通过“.”运算符来操作自己的成员变量),就应当将成员变量访问权限设置为private;


访问修饰符作用范围由大到小排列

public > protected > default > private

结语

访问控制部分的内容主要是各种修饰符的应用,我们一定要掌握好这部分的知识点,要搞清楚什么时候使用哪种修饰符,这样后期我们才能写出更健壮的系统。好了,今天的内容就到这里吧,各位小伙伴,开工快乐呀。

小黄鸭系列java基础知识 | 访问控制

标签:任务   个人   pac   on()   子类   out   static   main   权限控制   

原文地址:https://www.cnblogs.com/caoleiCoding/p/14425446.html


评论


亲,登录后才可以留言!