重新开始学习javase_隐藏实施过程

一、隐藏实施过程

对于隐藏实施过程,thinking in java中讲了很好,无非就是一个好的程序尽量做到,对外公开的程序,即使内部程序发生变动,也不会影响这些公开的服务的使用

  1. 类的导入
    java中的类是位于不同的包中,除了java.lang包中的类可以直接使用之外,别的包中的类要想用之的话
    第一种方式就是import导入
    import java.util.Date这样的话,就可以使用util中的Date类,如果一个包中你需要用到很多类的情况可以import java.util.*,这样你就可以使用util包中的所以的类了
    第二种方式就是使用完整类名
    java.util.Date date=new java.util.Date();
    我相信大家都会有第一种方式,但是第二种方式也是有用的。比如说一个类中你先import java.util.Date,但此时你还需要java.sql.Date怎么办?继续import?然后调用Date date=new Date()?不好意思,程序分不清你用的那种Date,这个时候第二个Date你就需要使用java.sql.Date date=new java.sql.Date();方式了


  2. “包”也由一系列类文件构成。每个文件都有一个 public类(并没强迫使用一个 public 类,但这种情况最很典型的),所以每个文件都有一个组件。如果想将所有这些组件(它们在各自独立的.java 和.class文件里)都归纳到一起,那么package 关键字就可以发挥作用)。
    若在一个文件的开头使用下述代码:
    package mypackage;
    那么package语句必须作为文件的第一个非注释语句出现。该语句的作用是指出这个编译单元属于名为mypackage 的一个库的一部分。或者换句话说,它表明这个编译单元内的 public类名位于 mypackage这个名字的下面。如果其他人想使用这个名字,要么指出完整的名字,要么与mypackage 联合使用import 关键字(使用前面给出的选项)。注意根据Java 包(封装)的约定,名字内的所有字母都应小写,甚至那些中间单词亦要如此。例如,假定文件名是MyClass.java。它意味着在那个文件有一个、而且只能有一个 public类。而且那个类的名字必须是MyClass(包括大小写形式):
    package mypackage;
    public class MyClass {
    // . . .
    现在,如果有人想使用 MyClass,或者想使用 mypackage内的其他任何 public 类,他们必须用import关键字激活mypackage 内的名字,使它们能够使用。另一个办法则是指定完整的名称:mypackage.MyClass m = new mypackage.MyClass();
    import关键字则可将其变得简洁得多:
  3. 创建独一无二的包名
    采用把域名反写的方式:www.baidu.com
    package com.baidu
  4. java中有个自动编译可以了解一下

    自动编译
    为导入的类首次创建一个对象时(或者访问一个类的static 成员时),编译器会在适当的目录里寻找同名
    的.class 文件(所以如果创建类 X的一个对象,就应该是 X.class)。若只发现X.class,它就是必须使用
    的那一个类。然而,如果它在相同的目录中还发现了一个 X.java,编译器就会比较两个文件的日期标记。如
    果X.java 比X.class 新,就会自动编译X.java,生成一个最新的 X.class。
    对于一个特定的类,或在与它同名的.java 文件中没有找到它,就会对那个类采取上述的处理。
  5. Java 访问指示符

    针对类内每个成员的每个定义,Java 访问指示符 poublic,protected 以及private都置于它们的最前面—
    —无论它们是一个数据成员,还是一个方法。每个访问指示符都只控制着对那个特定定义的访问。如果它们前面什么都没有,我们称之为默认的,无修辞的,友好的

    1、private访问控制符
    在前面已经介绍了private访问控制符的作用,如果一个成员方法或成员变量名前使用了private访问控制符,那么这个成员只能在这个类的内部使用。
    注意:
    不能在方法体内声明的变量前加private修饰符。
    2、默认访问控制符
    如果一个成员方法或成员变量名前没有使用任何访问控制符,就称这个成员所拥有的是默认的(default)访问控制符。默认的访问控制成员可以被这个包中的其它类访问。如果一个子类与其父类位于不同的包中,子类也不能访问父类中的默认访问控制成员。
    3、 protected访问控制符
    如果一个成员方法或成员变量名前使用了protected访问控制符,那么这个成员既可以被同一个包中的其它类访问,也可以被不同包中的子类访问。
    4、 public访问控制符
    如果一个成员方法或成员变量名前使用了public访问控制符,那么这个成员可以被所有的类访问,不管访问类与被访问类是否在同一个包中。

  6. 类的访问
    public可以公开访问
    默认的,只能在包中使用
    注意:没有protected和private
时间: 2024-12-28 21:18:47

重新开始学习javase_隐藏实施过程的相关文章

java基础 第5章 隐藏实施过程

第5章 隐藏实施过程 "进行面向对象的设计时,一项基本的考虑是:如何将发生变化的东西与保持不变的东西分隔开." 这一点对于库来说是特别重要的.那个库的用户(客户程序员)必须能依赖自己使用的那一部分,并知道一旦新版本的库出台,自己不需要改写代码.而与此相反,库的创建者必须能自由地进行修改与改进,同时保证客户程序员代码不会受到那些变动的影响. 为达到这个目的,需遵守一定的约定或规则.例如,库程序员在修改库内的一个类时,必须保证不删除已有的方法,因为那样做会造成客户程序员代码出现断点.然而,

读TIJ -5 隐藏实施过程

<Think in java·第 5 章隐藏实施过程> 从第一句话,就感觉本章会令我不满意."将发生变化的东西与保持不变的东西分隔开"与封装一毛钱的关系都没有.封装变化又称OCP,与OOP的封装性无关. 关于库(中的类A)的设计,依赖库的程序B,要求库是向下兼容的.程序B依赖的是A的接口.库的创建者不管想怎样自由地进行修改与改进,前提是不修改A的接口. 这里,A的接口,表示A需要提供的服务,设计者不可能.也不会考虑该服务(的方法名.参数)未来是否保持不变或改变. 所以,JD

7.JAVA编程思想笔记隐藏实施过程

欢迎转载,转载请标明出处:http://blog.csdn.net/notbaron/article/details/51040237 "进行面向对象的设计时,一项基本的考虑是:如何将发生变化的东西与保持不变的东西分隔开." Java 推出了"访问指示符"的概念,允许库创建者声明哪些东西是客户程序员可以使用的,哪些是不可使用的.这种访问控制的级别在"最大访问"和"最小访问"的范围之间,分别包括:public,"友好的

Hadoop学习笔记_4_实施Hadoop集群 --伪分布式安装

实施Hadoop集群 --伪分布式安装 准备与配置安装环境 安装虚拟机和linux,虚拟机推荐使用vmware,PC可以使用workstation,服务器可以使用ESXi,在管理上比较方便.ESXi还可以通过拷贝镜像文件复制虚拟机,复制后自动修改网卡号和ip,非常快捷.如果只是实验用途,硬盘大约预留20-30G空间. 以Centos为例,分区可以选择默认[如果想要手动分区,请参考博客:http://blog.csdn.net/zjf280441589/article/details/175485

RPA实施过程中可能会遇到的14个坑

RPA的实施过程并非如我们所想的那样,总是一帆风顺.碰坑,在所难免.但也不必为此过于惊慌,因为,我们已经帮你把RPA实施之路上的坑找了出来.RPA实施过程中,将会遇到哪些坑? [不看全文大纲版]●组织层面:1-缺乏当地团队的时间承诺2-缺乏领导力支持3-缺乏IT支持4-缺乏分析/数据功能的支持5-缺乏人力资源支持6-责任划分不明确●流程层面:7-选择了对业务影响微不足道的流程8-选择了涉及更高层次认知任务的流程9-选择了一个子流程很简单但流程本身很复杂的流程10-选择了存在更好自定义解决方案的流

IOS学习之路- 运行过程

1. 执行Main函数(在main.m文件中) 2. 加载MainStoryborad.storyboard文件 * 创建ViewController文件 * 根据storyboard文件中描述创建ViewController中的UIView(父层) * 创建UIView内部的所有子控件 * 将创建好的所有UIView对象跟ViewController做相应的关联(IBAction,IBoutlet  ) 3. 将程序的第一个控制器内部的UIview显示到手机屏幕上. IOS学习之路- 运行过程

十五、Android学习笔记_授权过程

1.需要申请App Key和App Secret.不同的开发平台有不同的接入方式,可以参考文档,然后将这两个值放进去. 2.通过OAuth类实现认证,它会自动跳转到认证界面,进行授权,成功之后需要处理回调接口. 3.在第二步调用回调接口时,它会返回用户的基本信息,比如用户id.此时需要将用户id信息保存起来,为后面登录做准备.回调接口的写法就为myapp://AuthorizeActivity,其中scheme全部为小写字母. <activity android:name="com.wei

swift学习笔记(六)析构过程和使用闭包对属性进行默认值赋值

一.通过闭包和函数实现属性的默认值 当某个存储属性的默认值需要定制时,可以通过闭包或全局函数来为其提供定制的默认值. 注:全局函数结构体和枚举使用关键字static标注    函数则使用class关键字标注 当对一个属性使用闭包函数进行赋值时,每当此属性所述的类型被创建实例时,对应的闭包或函数会被调用,而他们的返回值会被作为属性的默认值. ESC: Class SomeCLass{ let someProperty:SomeType={ //给someProperty赋一个默认值 //返回一个与

15、 Heartbeat+DRBD+MySQL高可用架构方案与实施过程细节

15. Heartbeat+DRBD+MySQL高可用架构方案与实施过程细节 参考自:http://oldboy.blog.51cto.com/2561410/1240412 heartbeat和keepalived应用场景及区别 很多网友说为什么不使用keepalived而使用长期不更新的heartbeat,下面说一下它们之间的应用场景及区别: 1.对于web,db,负载均衡(lvs,haproxy,nginx)等,heartbeat和keepalived都可以实现 2.lvs最好和keepa