Java学习日记(三)

目录

三、面向对象编程(二)

   1、隐藏和封装

       1.1 理解封装

       1.2 使用访问控制符

        1.3  package、import和import static

        1.4        Java的常用包


三、面向对象编程(二)

   1、隐藏和封装

       1.1 理解封装

       封装是面向对象编程的三大特征之一,它指的是将对象的状态信息隐藏在对象内部,

不允许外部程序直接访问对象的内部信息,而是通过该类提供的方法来实现对内部信息的操作和访问。

         封装是面向对象语言对客观世界的模拟,就如人的年龄,只有随着岁月的更改才会改变,而通常不能用其他方法改变人的年龄对一个类进行良好的封装,可以实现以下目的:

        (1)隐藏类的实现细节;

        (2)让访问者通过事先预定的方法来访问数据,从而可以在该方法里加入控制逻辑,限制对成员变量的不合理访问;

           (3)  可进行数据检查,从而有利于保证对象信息的完整性;

        (4)便于修改,提高代码的可维护性。

     为了实现良好的封装,需要从两个方面考虑。

       (1)将对象的成员变量和实现细节隐藏起来,

        (2)不允许外部直接访问.把方法暴露出来,让方法来控制对这些成员变量进行安全的访问和操作。

       1.2 使用访问控制符

      Java提供了3个访问控制符:private、protected、public,分别代表了3个访问控制级别,提供了4个访问控制级别。Java的访问控制级别由小到大,如图3.1所示:

    

图3.1访问控制级别由小到大 

 图中的Default并没有对应的访问控制符,当不使用任何访问控制符修饰类或类成员时,系统自动默认使用该访问控制级别。

           private(当前类访问权限):如果类里的成员(包括成员变量、方法和构造器等)使用private来修饰,则这个成员只能在当前的类中访问;

          default(包访问权限):在相同包下可以访问;

          protected(子类访问权限):被protected修饰的成员,既可以被同一个包下的其他子类访问,又可以被在其他包下的子类访问。在通常情况下,如果使用protect来修饰一个方法,通常是希望其子类来重写这个方法;

           public(公共访问权限):被它修饰的成员可以被所有类访问。

      掌握了访问控制符的用法之后,下面通过使用合理的访问控制符来实现一个Person类,这个Person类实现了良好的封装。

程序如下:

public class Person{
    private String name;
    private int age;
    public void setName(String name)
    {
    //执行合理性校验,要求用户名必须在2~6位之间
        if(name.length()>6||name.length()<2)
        {
            System.out.println("您设置的人名不符合要求“);
            return;
        }
        else
        {
            this.name=name;
        }
    }
     public String getName()
    {
        return this.name;
    }
    public void setAge(int Age)
    {
        if(age>100||age<0)
        {
            System.out.println("您设置的年龄不合法");
            return;
        }
        else
        {
            this.age=age;
        }
    }
     public int getAge()
    {
        return this.age;
    }
}

         定义了上面的Person类之后,该类的name和age两个成员变量只有在Person类中可操作和访问,在Person类之外只能通过set和get方法访问。

          1.3  package、import和import static

         Java允许将一组功能相关的类放在同一个package下,从而组成逻辑上的类库单元。如果希望把一个类放在指定的包结构下,应该在Java源程序的第一个非注释行放置如下格式的代码:

package packageName;

        一旦在Java源文件中使用了这个package语句,就意味着该源文件里定义的所有类都属于这个包。位于包中的每个类的完整类名都应该是包名和类名的组合,如果其它人需要使用该包下的类,也应使用包名加类名的组合。

      如果创建处于其他包类下的实例,则在调用构造器时也需要使用包前缀。例如在lee.HelloTest类中创建lee.sub.Apple类的对象,则需要采用如下代码:

lee.sub.Apple a=new lee.sub.Apple;
//调用构造器时需要在构造器前增加包前缀

         为了简化编程,Java引入了import关键字,import可以向某个Java文件中导入指定包层次下某个类或全部类,import语句应该出现在package语句之前、类定义之后。一个Java源文件只能包含一个package语句,但可以包含多个import语句。用法如下:

import package.subpackage···ClassName;
 

         在一些极端的情况下,import语句也帮不了我们,此时只能在源文件中使用类全名。

       静态导入需要用到import static,静态导入也有两种方法,分别用于指定类的单个静态成员变量、方法和全部静态成员变量、方法。

       导入单个静态成员的语法格式:

import static package.subpackage···Classname.fieldName|methodName;

         导入指定类的全部静态成员变量、方法的语法格式如下:

import static package.subpackage···ClassName.*;

其中*只能代表静态成员变量或方法名。

        1.4        Java的常用包

  一.java.lang包。该包提供了Java语言进行程序设计的基础类,它是默认导入的包。该包里面的Runnable接口和Object、Math、String、StringBuffer、System、Thread以及Throwable类需要重点掌握,因为它们应用很广。
    二:java.util包。该包提供了包含集合框架、遗留的集合类、事件模型、日期和时间实施、国际化和各种实用工具类(字符串标记生成器、随机数生成器和位数组)。
    三:java.io包。该包通过文件系统、数据流和序列化提供系统的输入与输出。
    四:java.net包。该包提供实现网络应用与开发的类。
    五:java.sql包。该包提供了使用Java语言访问并处理存储在数据源(通常是一个关系型数据库)中的数据API。
    六:java.awt包、javax.swing包。这两个包提供了GUI设计与开发的类。java.awt包提供了创建界面和绘制图形图像的所有类,而javax.swing包提供了一组“轻量级”的组件,尽量让这些组件在所有平台上的工作方式相同。
    七:java.text包。该包提供了与自然语言无关的方式来处理文本、日期、数字和消息的类和接口。

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

抽象保安

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值