欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

Java超详细讲解三大特性之一的封装,

来源: javaer 分享于  点击 21225 次 点评:122

Java超详细讲解三大特性之一的封装,


目录
  • 封装
    • 封装的概念
    • Java中的包
    • java中类的成员-构造器
    • java中的this关键字
  • 总结

    说到面向对象则不得不提面向对象的三大特征:封装,继承,多态。那么今天就和大家先来介绍什么是封装。

    封装

    封装的概念

    将类的某些信息隐藏在类的内部,不允许外部程序直接访问,而是通过该类提供的方法来对隐藏的信息进行操作和访问。

    为什么需要封装?

    当我们创建一个类的对象后,我们可以通过“对象.属性”的方式,对对象的属性进行赋值。这里赋值操作要受到 属性的数据类型和存储范围的制约。除此之外,没有其他制约条件,但是,在实际问题中,我们往往需要给属性赋值加入额外的限制条件。这个条件就不能在属性声明时体现,我们只能通过方法进行限制性条件的添加。同时我们需要避免用户再使用“对象.属性”的方式对属性进行赋值,则需要将属性声明为私有的(private)。

    封装的优点:

    1. 良好的封装能够减少耦合。

    2. 类内部的结构可以自由修改。

    3. 可以对成员变量进行更精确的控制。

    4. 隐藏信息,实现细节。

    封装的实现步骤

    (1)将属性修改为private

    (2)创建getter/setter方法,通过这两种方法对数据进行获取和设定,对象通过调用这两种发方法实现对数据的读写。

    class person{
      private int age;//修改属性为private
    public int getAge(){
      return age;
    }
    public void setAge(int a){
       age = a;
       }
     }
    

    封装 隐藏对象内部的复杂性,只对外公开简单的接口便于外部调用,封装性的体现,需要权限修饰符来配合。

    Java中的包

    Java中的包是为了更好的实现项目中类的管理,解决同名文件的冲突,提到java中的包那么我们就不得不提到package关键字,我们一般使用package声明类或接口所属的包,声明在源文件的首行,比如 package java.lang,每 . 一次就代表一层文件目录,同一个包下不能命名同名的接口,类,不同的包可以,对于包的使用则需要使用import关键字,在源文件中显示的使用import结构导入指定包下的类,接口,通常import声明在包的声明和类的声明之间,java中,包的名字规范是全小写的字母拼写

    java中类的成员-构造器

    任何一个类都有构造器,用来创建对象和初始化对象的属性,创建类的对象的方法:new+构造器,如 Person p = new Person();如果没有显式的定义类的构造器的话,则系统默认提供一个空参的构造器

    定义构造器的格式

    权限修饰符 类名 (形参列表){}

    总结:属性赋值的先后顺序:

    1默认初始化

    2显式初始化

    3构造器中初始化

    4通过“对象.方法”或“对象.属性”的方法,赋值

    java中的this关键字

    this关键字可以用来修饰:属性,方法构造器,this理解为:当前对象 或当前正在创建的对象

    在类的方法中,我们可以使用“this.属性”或“this.方法”的方式,调用 当前对象属性或方法。但是通常情况下,我们都选择省略“this.”。特殊情况下,如果方法的形参和类的属性同名时,我们必须显示的使用“this.变量”的方式,表面此变量为属性。

    在类的构造器也是一样,调用一个空参的构造器:this();调用有参数的 比如 public Person (int age) 就可以用 this(age)来进行调用,但是构造器中不能自己调用自己只能调用其他的构造器,如果有n个构造器,那么只有n-1个构造器可以使用this这样的方式来调用,且构造器this调用必须声明在构造器的首行,this也可以用来进行对象之间的比较大小。

    public class Boy {
        private int age;
        public int getAge() {
            return age;
        }
        public void setAge(int a) {
            age = a;
        }
        public void compare(Boy boy) {
            if (this.age > boy.age) {
                System.out.println("YES");
            } else if (this.age < boy.age) {
                System.out.println("No");
            }
        }
    }

    总结

    今天介绍了封装的概念,构造器,以及package,import 和 this关键字,希望大家喜欢。

    到此这篇关于Java超详细讲解三大特性之一的封装的文章就介绍到这了,更多相关Java封装内容请搜索3672js教程以前的文章或继续浏览下面的相关文章希望大家以后多多支持3672js教程!

    您可能感兴趣的文章:
    • Java轻松掌握面向对象的三大特性封装与继承和多态
    • 详细聊一聊java中封装的那点事
    • Java全面分析面向对象之封装
    • Java面向对象的封装你了解吗
    • Java十分钟精通类 封装 继承
    • 详解Java基础之封装
    • 浅谈Java封装、继承、多态特性
    • Java面向对象基础知识之封装,继承,多态和抽象
    相关栏目:

    用户点评