美文网首页
面向对象-封装

面向对象-封装

作者: UlissesJr | 来源:发表于2018-10-14 17:21 被阅读3次

封装
A:封装的概述
是指隐藏对象的属性和实现细节,仅对外提供公共访问方式。

B:封装的好处

  • 隐藏实现细节,提供公共的访问方式
  • 提高了代码的复用性
  • 提高安全性

C:封装原则

  • 将不需要对外提供的内容都隐藏起来。
  • 把属性隐藏,提供公共访问方式。

private 关键字

  • private 关键字的特点
    1.是一个权限修饰符
    2.可以修饰成员变量和成员方法
    3.被其修饰的成员只能在本类中被访问
  • 案例演示 封装和private的应用
    1.把成员变量用private修饰
    2.提供对应的getXxx()/setXxx()方法
    3.private仅仅是封装的一种体现形式,不能说封装就是私有
public class Demo1_Person {
    public static void main(String[] args){
        Person p1 = new Person();
        p1.name = "张三";
        p1.setAge(17);
        System.out.println(p1.getAge());
        p1.speak();
    }
}


class Person{
    String name;
    private int age;

    public void setAge(int age){
        if(age>0 && age<200){
            this.age = age;
        }else{
            System.out.println("请重新输入");
        }
    }

    public int getAge(){
        return age;
    }

    public void speak(){
        System.out.println(name + "..." + age);
    }
}

this关键字

  • this 关键字的特点

代表当前对象的引用

  • 案例演示
    this的应用场景
    用来区分成员变量和局部变量命名相同时
public class Demo1_This {
    public static void main(String[] args){
        Person_1 p1 = new Person_1();
        p1.setName("xiaoming");
        p1.setAge(23);
        System.out.println(p1.getName() + "..." + p1.getAge());
    }
}


class Person_1{
    private String name;
    private int age;

    public void setAge(int age){
        if(age>0 && age<200){
            age = age;
        }else{
            System.out.println("请重新输入");
        }
    }

    public int getAge(){
        return age;
    }

    public void setName(String name){
        name = name;
    }

    public String getName(){
        return name;
    }
}

代码运行结果
null...0

因为就近原则,当形参age与Person_1类的成员变量参数名相同时,优先选择离命令较近的形参age,也就是形参给自己赋值。

正确的输如如下:

public class Demo1_This {
    public static void main(String[] args){
        Person_1 p1 = new Person_1();
        p1.setName("xiaoming");
        p1.setAge(23);
        System.out.println(p1.getName() + "..." + p1.getAge());
    }
}


class Person_1{
    private String name;
    private int age;

    public void setAge(int age){
        if(age>0 && age<200){
            this.age = age;   //这里this代表当前对象的引用
        }else{
            System.out.println("请重新输入");
        }
    }

    public int getAge(){
        return age;
    }

    public void setName(String name){
        this.name = name;    //成员变量必须有对象来调用  p1的地址值==this的地址值
    }

    public String getName(){
        return name;
    }
}

输出结果如下:
xiaoming...23

相关文章

  • python 面向对象封装案例

    面向对象封装案例 目标 封装 小明爱跑步 存放家具 01. 封装 封装 是面向对象编程的一大特点 面向对象编程的 ...

  • 14.Python对象封装

    面向对象封装案例 目标 封装 小明爱跑步 存放家具 01. 封装 封装 是面向对象编程的一大特点 面向对象编程的 ...

  • 面试 | java基础

    面向对象 1、面向对象特征? 封装封装是面向对象的特征之一,是对象和类概念的主要特性。封装,也就是把客观事物封装成...

  • OC面向对象

    OC面向对象—封装 一、面向对象和封装 面向对象的三大特性:封装(成员变量)、继承和多态 在OC语言中,使用@in...

  • python 面向对象封装案例 II

    面向对象封装案例 II 目标 士兵突击案例 身份运算符 封装 封装 是面向对象编程的一大特点 面向对象编程的 第一...

  • 面向对象核心技术

    面向对象核心技术 面向对象编程有3大基本特性:封装、继承和多态。 (1)类的封装:封装是面向对象编程的核心思想。封...

  • 面向对象, equals与 ==区别演示,print与print

    一. 面向对象 1.理解面向对象的概念 类与对象 三大特征:封装示例封装演示 面向对象: 在调用对象时,除了要指定...

  • 面向对象之封装

    面向对象之封装 封装是面向对象最重要的特征之一,封装就是指隐藏。 对象隐藏了数据(例如priv...

  • 2019-01-06

    面向对象的三大特点(封装,继承,多态)基于对象 (封装)OOA 面向对象的分析(OOA,Object Orient...

  • 面向对象三大特性

    面向对象 三大特性 封装 封装最好理解了。封装是面向对象的特征之一,是对象和类概念的主要特性。封装,也就是把客观事...

网友评论

      本文标题:面向对象-封装

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