Java面向对象--封装

封装:是把过程和数据包围起来,对数据的访问只能通过已定义的接口。面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象。封装是一种信息隐藏技术,在java中通过关键字private实现封装。(字段私有化)

什么是封装?封装把对象的所有组成部分组合在一起,封装定义程序如何引用对象的数据,封装实际上使用方法将类的数据隐藏起来,控制用户对类的修改和访问数据的程度。

封装的例子:

public class Man

{

//对属性的封装,一个人的姓名,年龄,妻子都是这个对象(人)的私有属性

private String name;

private int age;

private Woman wife;

//对该人对外界提供方法的封装,可以设定妻子,姓名,年龄也可以获得男人的姓名和年龄
  // 方法封装
  public void setWife(Woman wife) {
  this.wife = wife;
  }
  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 class Woman {
  // 属性封装
  private String name;
  private int age;
  private Man husband;
  // 方法封装
  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 Man getHusband() {
  return husband;
  }
  public void setHusband(Man husband) {
  this.husband = husband;
  }
  }

/**

* 仔细看就会发现,Man类没有提供getWife的方法,这是因为男人不想让自己的妻子被外界访问,

*

* 接下来呢,就是封装可以把一个对象的属性私有,而提供一些可以被外界访问的属性的方法,

*

* 比如说,name属性,Man和Woman类都有相应的get和set方法,外界都可以通过这些方法访问和修改

*

* 同时对一些对象不想让外界访问的属性,就不提供其方法,比如说Man的wife属性,就没有get方法

*

* 外界是不能得到Man类的wife属性的

*

*/

上面那例子可能没有突出封装的好处,下面来个超简单的表达下:

public class Show

{

public static void show(String str)

{

System.out.println(str);

}

}

上面就是对 System.out.println();的封装。

调用的时候 :

public class Use

{

public static void main(String[] args)

{

Show.show("封装");

}

}

封装的作用:

① 对象的数据封装特性彻底消除了传统结构方法中数据与操作分离所带来的种种问题,提高了程序的可复用性和可维护性,降低了程序员保持数据与操作内容的负担。

②对象的数据封装特性还可以把对象的私有数据和公共数据分离开,保护了私有数据,减少了可能的模块间干扰,达到降低程序复杂性、提高可控性的目的。

时间: 2024-10-10 10:40:59

Java面向对象--封装的相关文章

Java面向对象㈠ -- 封装

Java的面向对象有三大特征:封装.继承.多态.这里主要对封装进行讲解. 封装可以理解为隐藏一个类的成员变量和成员函数,只对外提供需要提供的成员函数. Java的封装主要通过访问权限控制符:private,默认,protected,public来实现.(这四个权限访问控制符的区别网上有很多,建议读者自行搜索学习,切记要亲自练习一下!)最明显的实现就是把类的成员变量私有(private),只能通过类的成员函数来进行访问,并且此时的成员函数公有(public).这就是著名的setter/getter

Java 面向对象-封装

1.面向对象思想概述 ·面向: 基本意:面向.朝向 引申意:注重.关注 ·对象: 世间一切事物 ·面向过程思想: 面向过程思想就是把关注点放在一件事或一个活动中涉及到的步骤(也就是过程)上的思想 ·面向对象思想: -面向对象思想就是把关注点放在一件事或一个活动中涉及到的人或事物(也就是对象)上的思想 -特点:更符合人们思考习惯的思想.把复杂的事情简单话.把人们从执行者变成指挥者 -特征:封装.继承.多态 2.类与对象 描述事物从两个方面着手: 1.属性 2.行为 java中如何描述一个事物? J

Java面向对象----封装概念

封装 信息隐藏,隐藏对象的细节 访问修饰符 public private protected 默认 属性封装的实现 方法封装的目的(隐藏方法实现细节) package com.tanlei.newer; public class TeacherDemo { public static void main(String[] args) { teacher t=new teacher(); //t.name("zhangs"); t.setName("zhangs");

Java 面向对象-封装,继承

一:封装 特点:隐藏了实现细节,对外提供可以访问的方式. 关键字 private 将属性和方法私有化. 实现过程: 在 SetColor() 方法中可以限制调用者的输入.提高类的安全性. 二.this关键字 可以区分成员变量和局部变量 用this.变量 获取/设置 的是成员变量 注意:谁调用 this 就指向那个对象 三:继承(extends) 注意:继承只能是单继承(子类只能继承一个父类),但是父类可以被多个子类继承 格式:class 子类 extends 父类 {} 子类可以访问父类的属性和

JAVA面向对象封装(无参构造、有参构造、失血模型、重写toString)方法

//定义一个学生类public class Student {    //成员变量    private String name;    private int age;    private String address;    //无参构造方法    public Student() {        super();    }    //有参构造方法    public Student(String name, int age, String address) {        super

Java面向对象的封装

封装是Java面向对象的三大特性之一,通常我们是通过包管理机制同时对类进行封装,隐藏其内部实现细节,通常开发中不允许直接操作类中的成员属性,所以属性一般设置为私有权限private,类中一般会给出一些公共方法来让使用者通过特定方法读取或者操作里面的数据,避免误操作从而保证了数据的安全. 封装步骤一般分为3步,第一步首先修改属性的可见性,即将其设置为private:第二步创建getter/setter方法,用于获取/设置属性值,就是用来读写属性,eclipse中也提供了直接生成变量操作方法的菜单,

(1) 深入理解Java面向对象三大特性 封装 继承 多态

转眼已经工作快6年了,最开始做了2年J2EE:然后整了2年的数据仓库,主要是Cognos的报表开发:现在从事4G LTE核心网的开发,用的语言任然是Java,但写代码的机会不多,基本都是看代码找BUG,偶尔做点new feature也是在比较成熟的框架上复制.粘贴.修改,大部分时间还是在理解业务,钱多.事少.离家近,当时来这家公司图的是后面2点,2年过去了,英文水平有所提升,对敏捷开放也有一定的了解,但技术方面明显退步了或者说没有进步吧,本来以前也不怎么好,因为工作上用不到,自己也没怎么学习,所

黑马程序猿——JAVA面向对象的特性:封装,继承,多态

                                       - ----------android培训.java培训.java学习型技术博客.期待与您交流!------------  一.java面向对象的特性.封装.继承.多态         封装 封装是对象和类概念的主要特性. 封装.也就是把客观事物封装成抽象的类.而且类能够把自己的数据和方法仅仅让可信的类或者对象操作,对不可信的进行信息隐藏. 继承 面向对象编程 (OOP) 语言的一个主要功能就是"继承".继承

Atitit usbQb212 oo 面向对象封装的标准化与规范解决方案java c# php js

1.1. 封装性是面象对象编程中的三大特性之一  三个基本的特性:封装.继承与多态1 1.2. 魔术方法 预定义方法2 1.3. 魔术常量(Magic constants) 预定义变量2 1.4. 适用领域 js php java c#2 1.5. 构造函数 __construct( ) vs xxxCls()3 1.6. 析构函数名称必须是__destruct( )  finally()3 1.7. 私有属性 与工友属性3 1.8. $this指针3 1.9. __autoload() 类自动