Java面向对象---封装

目录

前言

一、封装是什么?

1.封装的概念

2.封装的原则 

二、如何进行封装?

1.private关键字

2.private关键字的使用

3.this关键字

4.setXxx() / getXxx()方法

5.例子

三.封装的优点 


前言

  • 早期的计算机编程是基于面向过程的方法,例如实现算术运算1+1+2=4,通过设计一个算法就可以解决当时的问题。随着计算机技术的不断提高,计算机被用于解决越来越复杂的问题。
  • 一切事物皆对象,通过面向对象的方式,将现实世界的事物抽象成对象,现实世界中的关系抽象成类、继承,帮助人们实现对现实世界的抽象与数宇建模。
  • 通过面向对象的方法,更利于用人理解的方式对复杂系统进行分析、设计与编程。
  • 同时,面向对象能有效提高编程的效率,通过封装技术,消息机制可以像搭积木的一样快速开发出一个全新的系统。面向对象是指一种程序设计范型,同时也是一种程序开发的方法。        

一、封装是什么?

1.封装的概念

        封装是面向对象三大特征之一,是面向对象编程语言对客观世界的模拟,客观世界里成员变量都是隐藏在对象内部的,外界是无法直接操作的。

  • 将属性私有化,提供公有方法访问私有属性。
  • 通过这些公有方法访问私有属性。

2.封装的原则 

        将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过改类提供的方法来实现对隐藏信息的操作和访问成员变量private,提供对应的getXxx()和setXxx()方法。

二、如何进行封装?

1.private关键字

① 是一个权限修饰符。

② 可以修饰成员(成员变量和成员方法)。

③ 作用保护成员不被别的类使用,被private修饰的成员只在本类中才能访问。    

2.private关键字的使用

    //修饰成员变量
    private String title;
    private int pageNum;
    //修饰成员方法
    private void c() {
        System.out.println("cc");
    }

针对被private修饰的成员变量,如果需要被其他类使用,提供相应的操作 :

①  提供"get变量名()"方法,用于获取成员变量的值,方法用public修饰。

②  提供"set变量名(参数)"方法,用于设置成员变量的值,方法用public修饰。

3.this关键字

this修饰的变量用于指代成员变量

①  方法的形参如果于成员变量同名,不带this修饰的变量指的是形参而不是成员变量。

②  方法的形参没有与成员变量名,不带this修饰的变量指的是成员变量。

4.setXxx() / getXxx()方法

  • get变量名()
  • set变量名(参数)

[注] getXxx() / setXxx() 方法,get和set后的变量名首字母大写。

    private String name;
    private int age;

    public String getName() {
        return name;
    }

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

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

        set和get方法可以自己键盘输入,也可以按ALT+INSERT快捷键输入(熟练以后),写完被privat修饰的成员变量后,按下ALT+INSERT后出现这个界面,选择相对应的。

        添加方法的时候把带参和无参的方法都要写上,因为如果自定义了带参构造方法,还要使用无参数构造方法,就必须再写一个无参数构造方法。推荐无论是否使用都手动书写无参数构造方法。

5.例子

public class Demo {
    private String hobby;
    private String name;
    private int age;
    //无参
    public String getHobby() {
        return hobby;
    }
    //有参
    public void setHobby(String hobby) {
        this.hobby = hobby;
    }
    //无参
    public String getName() {
        return name;
    }
    //有参
    public void setName(String name) {
        this.name = name;
    }
    //无参
    public int getAge() {
        return age;
    }
    //有参
    public void setAge(int age) {
        this.age = age;
    }

    public String toString() {
        return "我叫" + name + ",今年" + age + "岁," + "爱好" + hobby;
    }
}

测试类:

package Mar0328.fengzhuang;

public class Test {
    public static void main(String[] args) {
        Demo d = new Demo();      //创建一个Demo类的对象命名为d
        d.setName("费迪南德");     //调用set方法给其赋值
        d.setHobby("开赛车");     //调用set方法给其赋值
        d.setAge(18);     //调用set方法给其赋值
        System.out.println(d);     //输出语句
    }
}

结果:

我叫费迪南德,今年18岁,爱好开赛车

Process finished with exit code 0

三.封装的优点 

  1. 通过方法来控制成员变量的操作,提高了代码的安全性。
  2. 把代码用方法进行封装,提高了代码的复用性。
  3. 减少耦合: 可以独立地开发、测试、优化、使用、理解和修改
  4. 减轻维护的负担: 可以更容易被程序员理解,并且在调试的时候可以不影响其他模块
  5. 有效地调节性能: 可以通过剖析确定哪些模块影响了系统的性能
  6. 降低了构建大型系统的风险: 即使整个系统不可用,但是这些独立的模块却有可能是可用的

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值