【java编程思想--学习笔记(三)】访问控制-接口实现与类的访问权限

接口实现

什么是数据类型? java中将数据和方法包装在类中,隐藏具体的实现,其结果就是一种数据类型。(封装产生数据类型)

联想到八大基本数据类型,都具有上述的特点。

由于数据类型的上述特点,创造者将权限的边界划在数据类型的内部,将希望被访问的数据和方法与不希望被访问到的方法和数据分开,隐藏不希望被访问到的方法和数据,实际上就实现了接口和具体实现的分离。

也就是说,了解一个类如何去用,懂得其内部公开的变量和方法就可以。

类的访问权限

上面讲的都是将访问权限设置在类的内部,也可以将访问权限修饰词放在类外,修饰类。

可用import去访问这些类。

问题来了,java中什么是类的域? 类中的变量的适用范围。

除了内部类,为了使类能够被其他类访问,类外的访问权限的修饰词不可以是private和protected,因此类只有两种外权限“public”和“包访问权限”,而如果需要希望这个类不被其他访问,将所有的构造器设置为private即可。

注意:static变量或方法提供了只创建对象却不用创建类的方式。

实例演示:

ConnectionManager.java

package com.study.test;

public class ConnectionManager {

    public ConnectionManager() {
    }

    public static Connection[] getConnection() {
        Connection[] connection = new Connection[4];
        return connection;
    }

    public Connection[] isNull(Connection[] connection) {
        if (connection == null) {
            return null;
        } else {
            return connection;
        }
    }

}

class Connection {
    private Connection() {
    }
}

这里需要说明的是经过getConnection()创建的等同于:

Connection[] connection = {null,null,null,null};

这是由后面的test实验得出。

但是我还是分不清,{null,null,null,null},{},null的区别。

下面的实验:

package com.study.test;

public class ConnectionManagerTest {
    public static void main(String[] args) {
        ConnectionManager manager = new ConnectionManager();
        Connection[] connections = manager.getConnection();
        System.out.println(connections[0]);
        System.out.println(connections[1]);
        connections = null;
        if (manager.isNull(connections) == null) {
            System.out.println("0");
        }else{
            System.out.println("1");
        }
    }
}

只能证明getConnection()是成功的。关于数组的深入学习,我下篇会给出正确答案。

时间: 2024-12-10 11:44:36

【java编程思想--学习笔记(三)】访问控制-接口实现与类的访问权限的相关文章

【Java编程思想--学习笔记(一)】访问控制-包

Java编程思想–学习笔记(一) 访问控制(或隐藏具体实现)与"最初的实现并不恰当"有关. 1.包:库单元 我们之所以要导入包,就是要提供一个管理名字的空间机制. 每个java文件只能有一个public类.其他私有类为主public·类提供支持. 1.1 代码组织 与编译型语言不同,java可运行程序是一组可以打包并压缩成java文档文件(JAR,使用Java的jar文档生成器)的.class文件. 使用package和import关键字,使得不会出现名称冲突问题. 注意:java包的

JAVA编程思想学习笔记——第一章 对象导论

搞了一年多java,野路子出身,发现java基础这块还是相当的薄弱!故决定学习<Java编程思想>这本书.在此把学习的知识点记录下! 面向对象的五大特性 1.万物皆为对象 2.程序是对象的集合,它们通过发送消息来告诉彼此所要做的 3.每个对象都由自己的由其它对象所构成的存储 4.每个对象都拥有其类型 5.某一特定类型的所有对象都可以接收同样的信息  单根继承结构 所有的类都继承自单一的基类,Object.在单根集成结构中的所有对象都具有一个公用接口,所以他们归根到底都是相同的基本类型.单根集成

【java编程思想--学习笔记(四)】对象导论

写这篇博客的前言: 长话短说,我希望通过阅读<java编程思想>来使我的代码 简洁可用 . 目的的层次不同,首先具体的目标是,了解Java的特性和巩固Java的基础. 更抽象的目的如下: 1.期待以巩固基础的方式,使代码优美,简洁,高效. 2.使自己写的模块能够开放适度,好用. 3.形成一种对代码是否优美的审美观. 于是<Java编程思想>第一章 对象导论 由此开始. 1.1 抽象过程 java 相对于命令式语言的优势在于只针对于待解问题建模.后者所做的主要抽象要求所做问题基于计算

[Java编程思想-学习笔记]第3章 操作符

3.1  更简单的打印语句 学习编程语言的通许遇到的第一个程序无非打印"Hello, world"了,然而在Java中要写成 System.out.println("Hello, world"); 我们都会感觉太冗长了,能不能简单一些呢?静态导入可以省略掉System,就像这样 import static java.lang.System.*; public class Hello { public static void main(String[] args) {

Java编程思想学习笔记_3

在继承的时候确保正确清理 在清理方法中,还必须注意对基类清理方法和成员对象清理方法的调用顺序,以防止某个子对象依赖于另一个子对象的情形的发生.一般而言,首先执行类的所有特定清理动作,其顺序同生成顺序相反(通常这要求基类元素仍然存活.然后再调用基类的清理方法. final参数 Java允许在参数列表中以声明的方式将参数声明为final.这意味着无法在方法中更改参数的值.(引用无法更改参数指向的对象). final和private关键字 类中所有的private方法都隐式的被指定为final的,由于

【java编程思想--学习笔记(二)】访问控制-Java访问权限修饰词

如果不提供任何访问修饰词,则意味着它是"包访问权限". 2.1 包访问权限 包访问权限赋予包内的类相互访问彼此成员的权限. 应该说, 包访问权限为将类群聚在一起的行为提供了意义和理由,即建立包的目的不仅仅是为了分类和区分,更是为了是同一个包内的类可以拥有彼此的代码. 取得对某一成员访问权的途径: 1)该成员的访问修饰词为public. 2)通过不加访问权限修饰词并将目标类放在同一包内的方式. 3)继承.子类可以访问父类的public和protected修饰词的成员,但只有在父子类处于同

Java编程思想 学习笔记1

一.对象导论 1.抽象过程 Alan Kay曾经总结了第一个成功的面向对象语言.同时也是Java所基于的语言之一的Smalltalk的五个基本特性,这些特性表现了纯粹的面向对象程序设计方式 1)万物皆对象. 2)程序是对象的集合,它们通过发送消息来告知彼此所要做的.要想请求一个对象,就必须对该对象发送一条消息.更具体的说,可以把消息想象为对某个特定对象的方法的调用请求. 3)每个对象都有自己的由其他对象所构成的存储.换句话说,可以通过创建包含现有对象的包的方式来创建新类型的对象. 4)每个对象都

Java编程思想 学习笔记8

八.多态  在面向对象的程序设计语言中,多态是继数据抽象和继承之后的第三种基本特征. 多态通过分离做什么和怎么做,从另一角度将接口和实现分离开来. “封装”通过合并特征和行为来创建新的数据类型.“实现隐藏”则通过将细节“私有化”把接口和实现分离开来.而多态的作用则是消除类型之间的耦合关系. 继承允许将对象视为它自己本身的类型或其基类类型来加以处理.这种能力极其重要,因为它允许将多种类型视为同一类型来处理,而同一份代码也就可以毫无差别地运行在这些不同类型之上了.多态方法调用允许一种类型表现出与其他

Java编程思想 学习笔记9

九.接口 接口和内部类为我们提供了一种将接口与实现分离的更加结构化的方法. 1.抽象类和抽象方法  抽象类是普通的类与接口之间的一种中庸之道.创建抽象类是希望通过这个通用接口操纵一系列类. Java提供一个叫做抽象方法的机制,这种方法是不完整的:仅有声明而没有方法体.例: abstract void f(); 包含抽象方法的类叫做抽象类. 如果从一个抽象类继承,并想创建该新类的对象,那么就必须为基类中的所有抽象方法提供方法定义.如果不这样做,那么导出类也是抽象类. 我们可能会创建一个没有任何抽象