面向对象基础—封装

本文详细介绍了封装在面向对象编程中的重要性,包括数据隐藏和访问控制,以及如何通过私有化成员变量和使用getter/setter方法实现封装。此外,文章还阐述了高内聚和低耦合的原则,以及Java中的继承概念,包括语法、特点和好处。
摘要由CSDN通过智能技术生成

封装概述

为什么需要封装?

  • 面向对象编程语言是对客观世界的模拟,客观世界里每一个事物的内部信息都是隐藏在对象内部的,外界无法直接操作和修改,只能通过指定的方式进行访问和修改。封装可以被认为是一个保护屏障,防止该类的代码和数据被其他类随意访问。

  • 适当的封装可以让代码更容易理解与维护,也加强了代码的安全性。

  • 通俗的讲,把该隐藏的隐藏起来,该暴露的暴露出来。这就是封装性的设计思想。

  • 随着我们系统越来越复杂,类会越来越多,那么类之间的访问边界必须把握好,面向对象的开发原则要遵循“高内聚、低耦合”:

    • 高内聚:相关的功能和数据尽可能地组织在同一个类中,各个类内部数据操作细节自己完成,以确保其独立性。

    • 低耦合:各个类之间的依赖关系应尽可能低。也就是说,一个类的变化应尽量减少对其他类的影响。有助于提高软件的可扩展性、可复用性和灵活性。

如何实现封装呢?

实现封装就是指控制类或成员的可见性范围?这就需要依赖访问控制修饰符,也称为权限修饰符来控制。

成员变量/属性私有化

在面向对象编程中,将成员变量(也称为属性)私有化是一种常见的做法。这样做的目的是保护数据,防止外部直接访问和修改,以确保数据的完整性和安全性。同时,通过提供公共的getter和setter方法来访问和修改这些私有变量,可以更好地控制对这些变量的访问和修改。

成员变量封装的目的

/**
 * @ClassName ExtendDemo
 * @Description TODO
 * @Author 周一
 * @Date 2024/4/15 14:11
 * @Version 1.0
 * 继承:继承上一代的属性和方法的特性
 * 多个类成为子类也称为派生类
 * 多个类抽出的父类也成为派生类
 * 多个类抽出的父类也成为链类、超类
 * 父类通用,子类更具体
 * java只支持单继承
 * 会先在本类中寻找,再去其他地方找
 * 可通过ctrl+h查看继承关系 继承树.
 * 可通过crtl +alt+u 图像化的方式查看继承关系
 * 修饰符      本类       本包      其他包子类     其他包非子类
 * private      √
 * 缺省(默认)   √        √
 * protected    √        √         √
 * public       √        √         √             √
 *
 *
 * 修饰符的可见范围
 */

 

实现步骤

使用 private 修饰成员变量

private 数据类型 变量名 ;

 提供 getXxx方法 / setXxx 方法,可以访问成员变量,代码如下:

public class Person {
    private String name;
    private int age;
    private boolean marry;
}

public class Person {
    private String name;
    private int age;
    private boolean marry;

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

    public String getName() {
        return name;
	}

    public void setAge(int a) {
        age = a;
    }

    public int getAge() {
        return age;
    }
    
    public void setMarry(boolean m){
        marry = m;
    }
    
    public boolean isMarry(){
        return marry;
    }
}
package com.haogu.encapsulation;

public class TestPerson {
    public static void main(String[] args) {
        Person p = new Person();

        //实例变量私有化,跨类是无法直接使用的
/*        p.name = "张三";
        p.age = 23;
        p.marry = true;*/

        p.setName("张三");
        System.out.println("p.name = " + p.getName());

        p.setAge(23);
        System.out.println("p.age = " + p.getAge());

        p.setMarry(true);
        System.out.println("p.marry = " + p.isMarry());
    }
}


 

IDEA自动生成get/set方法模板

  • 大部分键盘模式按Alt + Insert键。

  • 部分键盘模式需要按Alt + Insert + Fn键。

继承

继承的概述

继承有延续(下一代延续上一代的基因、财富)、扩展(下一代和上一代又有所不同)的意思。

继承的好处
  • 提高代码的复用性

  • 提高代码的扩展性

  • 表示类与类之间的is-a关系

继承的语法格式

格式:

【修饰符】 class 父类 {
	...
}

【修饰符】 class 子类 extends 父类 {
	...
}

 

继承的特点

1.子类会继承父类所有的实例变量和实例方法

2.Java只支持单继承,不支持多重继承

3.Java支持多层继承(继承体系)

4.一个父类可以同时拥有多个子类

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值