Java编程思想(三) —— 访问权限的控制

之前没去注意的修饰符,一般变量前面没添加,一个是不知道有什么用,一个是懒,后面遇到项目的时候就会发现私有和公有区别还是很大的。

(1)首先是包名

使用一个类的时候,例如集合类,就需要引入这个包,然后再使用该包下面的类。如:

package com.myown.iaiti;

public class Print {
    static void print(String s){
        System.out.println(s);
    }
}

自定义的包,通过引入自己的包,以后你就可以使用自己写的方法进行字符串的打印。之前试过将自己包的路径设进CLASSPATH中,那么在其他目录编译,不需要将包放进该目录,也可以正常运行,不然的话是找不到JAR包的。

(2)public

public,公共的,以前的老师经常用老子来比喻,这是公共的东西,老子给你用,public紧跟数据成员,说明对每个人都是可用的。

(3)private

private,私有的,老子的私有财产,你不要动它,除了包里含有这个数据成员的类可以用之外,其他类不能使用,这部分是设计者本身不想给外人看和修改的。

public class Print {
    public static void main(String[] args) {
        GetIt g = new GetIt();
    }
}

 class GetIt{// 注意 一个文件只能有一个公共类 如果你想在
     //前面加上public 那么就不要和Print写在同一个文件
    private GetIt(){}
}

The constructor GetIt() is not visible,不可见,看出用处了吧,单例模式也是这么用的,控制对象的创建。

单例模式的应用:

class A{
    private A(){}
    private static A a = new A();
    public static A getInstace(){
        return a;
    }
}

其他的类不能通过new来创建对象,因为构造器被private所修饰,用处在于,当这个A类极为复杂,耗内存的时候,我需要严格控制A对象的创建。既然举了单例,顺便就把单例给讲了。之前看过一些人写的,实在太经典,太厉害了。

上面那种是属于饿汉式,就是一来就帮你new出来,以后new的时候就直接用,不存在线程问题,缺点是放着如果没用的话就是资源浪费。

懒汉式

public class A {
     private A(){ }    

     private static A a;
     public static A getInstance(){
         if(a == null){
             return a = new A();
         }else{
             return a;
         }
     }
 }

用的时候才帮你new,为null才new,但是存在线程问题,加上synchronized,但是效率降低,因为多线程的话,其中有一个在用的话,就会霸占着。

完美的方法是结合两者:

public class A {
    // 私有静态内部类, 只有当有引用时, 该类才会被装载
    private static class LazyA {
        public static A A = new A();
    }
    public static A getInstance() {
        return LazyA.A;
    }
}

之前看不懂这个所谓的静态内部类,作用是,既可以做到延时加载,因为只有当使用的时候才会去new,用getInstace方法,不存在多线程问题是因为,静态类属于所有外部类对象,只会加载一次,而静态内部类实例化之后,便是类级别的属性,不属于某个对象,只会加载一次,这样就不会存在资源浪费,也没有多线程效率低的问题。想出这个方法的人真的厉害。

(4)protected

Print是基类,国人喜欢讲父类,但是老外觉得子类更牛逼,基类算是一个根基或者基础吧,protected就是老子专门留给儿子的财产。

public class Print {
    protected void print(){}
    private void cannotprint(){}
}

public class PrintSon extends Print{
   void get(){
       print();
       //cannotprint();   private 私有的方法,子类还是不能用
   }
}

public class NotSon {
    void get() {
        print();
    }
}

protected修饰的,子类可以拿到,介于public和private之间。

(5)类的访问权限

每个文件只能有一个public类。

类名和文件名一致。

单例的话如果没基础看起来有点超前,但是后面知识点完善之后,会容易理解,访问权限的控制还是在于你想不想把自己的那部分代码给别人直接使用。

Java编程思想(三) —— 访问权限的控制,布布扣,bubuko.com

时间: 2024-08-02 07:00:11

Java编程思想(三) —— 访问权限的控制的相关文章

重读java编程思想之访问权限控制二

private:私有权限 即除了包含该成员的类之外,其他任何类都无法访问这个成员: class Sun{ private Sun(){} static Sun doSun(){ return new Sun(); } } public class IceCream{ public static void main(String[] args){ // Sun s = new Sun(); 这是错误的 Sun s = Sun.doSun(); } } //上面的例子简单的描述了private的一个

Java编程思想(四) —— 复用类

看了老罗罗升阳的专访,情不自禁地佩服,很年轻,我之前以为和罗永浩一个级别的年龄,也是见过的不是初高中编程的一位大牛之一,专访之后,发现老罗也是一步一个脚印的人.别说什么难做,做不了,你根本就没去尝试,也没有去坚持. If you can't fly then run,if you can't run then walk, if you can't walk then crawl,but whatever you do,you have to keep moving forward--Martin

Java编程思想(六、访问权限控制)

访问控制(或隐藏具体实现)与"最初的实现并不恰当"有关.便于未来重构代码,而不必对业务层做过多的改变.因此,Java提供了访问控制修饰词,以供类库开发人员向客户端程序员指明哪些是可用的,哪些是不可用的. 访问控制的等级,从最大权限到最小权限依次为:public.protected.包访问权限(没有关键词).和private. 1.包:类库单元.包内含有一组类,它们在单一的名字空间之下被组织在了一起.比如,在Java的标准发布中有一个工具库.它被组织在java.util名字空间之下.ja

《Java编程思想》06.访问权限控制

如何把变动的事物与保持不变的事物区分开来 访问权限控制的等级(大->小):public.protected.包访问权限(没有关键词).private 包:库单元 代码组织 编译一个.java文件,文件中的每个类都会有一个输出文件.class,文件名与类名相同 Java的可运行程序是一组可以打包并压缩为一个Java文档文件(JAR)的.class文件.Java解释器负责这些文件的查找.装载和解释 类库 ---实际上---> 一组类晚间 Java包的命名规则全部使用小写字母 package acc

java编程思想总结(三)

java编程思想总结(三) java编程思想总结是一个持续更新的系列,是本人对自己多年工作中使用到java的一个经验性总结,也是温故而知新吧,因为很多基础的东西过了这么多年,平时工作中用不到也会遗忘掉,所以看看书,上上网,查查资料,也算是记录下自己的笔记吧,过一段时间之后再来看看也是蛮不错的,也希望能帮助到正在学习的人们,本系列将要总结一下几点: 面向对象的编程思想 java的基本语法 一些有趣的框架解析 实战项目的整体思路 代码的优化以及性能调优的几种方案 整体项目的规划和视角 其它遗漏的东西

Java编程思想重点笔记(Java开发必看)

Java编程思想,Java学习必读经典,不管是初学者还是大牛都值得一读,这里总结书中的重点知识,这些知识不仅经常出现在各大知名公司的笔试面 试过程中,而且在大型项目开发中也是常用的知识,既有简单的概念理解题(比如is-a关系和has-a关系的区别),也有深入的涉及RTTI和JVM底层 反编译知识. 1. Java中的多态性理解(注意与C++区分) Java中除了static方法和final方法(private方法本质上属于final方法,因为不能被子类访问)之外,其它所有的方法都是动态绑定,这意

java编程思想总结(二)

java编程思想总结(二) java编程思想总结是一个持续更新的系列,是本人对自己多年工作中使用到java的一个经验性总结,也是温故而知新吧,因为很多基础的东西过了这么多年,平时工作中用不到也会遗忘掉,所以看看书,上上网,查查资料,也算是记录下自己的笔记吧,过一段时间之后再来看看也是蛮不错的,也希望能帮助到正在学习的人们,本系列将要总结一下几点: 面向对象的编程思想 java的基本语法 一些有趣的框架解析 实战项目的整体思路 代码的优化以及性能调优的几种方案 整体项目的规划和视角 其它遗漏的东西

《Java编程思想》读书笔记

前言 这个月一直没更新,就是一直在读这本<Java编程思想>,这本书可以在Java业界被传神的一本书,无论谁谈起这本书都说好,不管这个人是否真的读过这本书,都说啊,这本书很好.然后再看这边书的厚度,哇塞,厚的真的不止一点点,所以很多人看了没多久就放弃了,看不下去,但是基于它的厚度,就说,这是一本好书.也有人说,看了没什么用的一本书,甚至还去嘲笑那些正在看的人,说还不如看点实际的技术.那么在我的世界里,如果一本书没有读过,如果妄加评论的话,没有任何的意义.所以我真的仔仔细细读了下来,书上也写了很

《Java编程思想(第4版)》pdf

下载地址:网盘下载 内容简介 编辑 本书赢得了全球程序员的广泛赞誉,即使是最晦涩的概念,在Bruce Eckel的文字亲和力和小而直接的编程示例面前也会化解于无形.从Java的基础语法到最高级特性(深入的面向对象概念.多线程.自动项目构建.单元测试和调试等),本书都能逐步指导你轻松掌握.[1] 从本书获得的各项大奖以及来自世界各地的读者评论中,不难看出这是一本经典之作.本书的作者拥有多年教学经验,对C.C++以及Java语言都有独到.深入的见解,以通俗易懂及小而直接的示例解释了一个个晦涩抽象的概