美文网首页
Java封装性

Java封装性

作者: 南在南方i | 来源:发表于2020-02-09 18:23 被阅读0次

封装的基础实现

在Java中所有面向对象的概念都是以类与对象的关系为主的,那么首先我们通过一个例子解释为什么需要提供封装性

观察如下代码:

class Person{
    String name;
    int age;
    public void tell(){
        System.out.println("姓名:"+name+",年龄:"+age);
    }
}

public class MyClass {
    public static void main(String[] args){
       Person person = new Person();
       person.name = "张三";
       person.age = -30;
       person.tell();
    }
}
  • 运行结果:姓名:张三,年龄:-30
  • 此时的代码没有语法错误,但是从现实的角度来讲,这个代码是有错误的且问题严重(年龄:-30)。这样的错误严格来讲属于业务错误
  • 错误原因在于当前类的属性可以直接被类外部的对象调用,所以此时我们认为这样的操作是属于不安全的操作。因此需要解决的问题是将内部的属性保护起来,即:不让外部直接操作,为此在Java中提供了private关键字,利用此关键字可以实现封装

封装性代码如下:

class Person{
    private String name;
    private int age;
    public void tell(){
        System.out.println("姓名:"+name+",年龄:"+age);
    }
}

加入private之后,就表示此时name和age两个属性只能够被Person访问

  • 现在发现,使用了private定义的属性,类的外部不能够直接访问,所以安全性是最高的
  • 如果现在需要通过对象操作类中的属性,在Java中就有了一个明确的要求:可以使用settergetter方法取得封装性内容,以private String name;为例:
    设置数据public void setName(String n);
    取得数据public String getName();

使得外部可以访问:

class Person{
    private String name;
    private int age;
    public void tell(){
        System.out.println("姓名:"+name+",年龄:"+age);
    }
    public void setName(String n){
        name = n;
    }
    public String getName(){
        return name;
    }
    public void setAge(int n){
        if (age >0 && age < 200){
            age = n;
        }
    }
    public int getAge(){
        return age;
    }
}

public class MyClass {
    public static void main(String[] args){
       Person person = new Person();
       person.setName("张三");
       person.setAge(30);
       person.tell();
    }
}

此时经过封装后,外界访问属性需设置符合现实规律的值才可以显示(0<age<200),否则无法得到想要的结果

\color{red}{开发原则}:只要是类中的属性应使用private封装,封装后的属性必须严格按照要求编写settergetter方法

总结:

  • private声明的属性只能够被类的内部所访问
  • private声明的属性必须有对应的settergetter方法,而且方法名称要求按照严格标准编写

相关文章

  • Java面向对象-封装性

    一、Java封装性的使用 封装性的产生目的:保护某些属性和方法不被外部所看见。封装性的实现:为属性和方法进行封装是...

  • Java封装性

    封装的基础实现 在Java中所有面向对象的概念都是以类与对象的关系为主的,那么首先我们通过一个例子解释为什么需要提...

  • 《Java从小白到大牛》之第10章 面向对象基础(下)

    《Java从小白到大牛》纸质版已经上架了!!! 封装性与访问控制 Java面向对象的封装性是通过对成员变量和方法进...

  • 2018-11-25

    JAVA的封装性、继承性、多态性 ——封装 封装性就是把类(对象)的属性和行为结合成一个独立的相同单位,并尽可能隐...

  • Java语言有哪些特点?

    简单易学; 面向对象(封装,继承,多态); 平台无关性( Java 虚拟机实现平台无关性); 可靠性; 安全性; ...

  • java 语言有哪些特点?

    简单易学; 面向对象(封装,继承,多态); 平台无关性( Java 虚拟机实现平台无关性); 可靠性; 安全性; ...

  • java平台理解

    Java特性: 面向对象(封装,继承,多态) 平台无关性(JVM运行.class文件) 语言(泛型,Lambda)...

  • 对java平台的理解

    Java特性: 1 面向对象(封装,继承,多态), 2 平台无关性(JVM运行.class文件),语言(泛...

  • 封装

    Java 封装 在面向对象程式设计方法中,封装(英语:Encapsulation)是指一种将抽象性函式接口的实现细...

  • Java 封装

    Java 封装 在面向对象程式设计方法中,封装(英语:Encapsulation)是指一种将抽象性函式接口的实现细...

网友评论

      本文标题:Java封装性

      本文链接:https://www.haomeiwen.com/subject/oljnxhtx.html