Java面向对象㈠ -- 封装

Java的面向对象有三大特征:封装、继承、多态。这里主要对封装进行讲解。

封装可以理解为隐藏一个类的成员变量和成员函数,只对外提供需要提供的成员函数。

Java的封装主要通过访问权限控制符:private,默认,protected,public来实现。(这四个权限访问控制符的区别网上有很多,建议读者自行搜索学习,切记要亲自练习一下!)
最明显的实现就是把类的成员变量私有(private),只能通过类的成员函数来进行访问,并且此时的成员函数公有(public)。这就是著名的setter/getter方法。

说到Java的封装,不得不提到构造函数,每次通过创建一个对象的时候,构造的函数都会被调用。构造函数可以重载,但是不能被覆盖。另外与构造函数类似的是构造代码块。

Java的封装本身是很简单的,只是在这里另外介绍两个关键字:this,static。

this代表当前对象的引用,当使用这个对象的成员变量和成员函数时,实际上会有一个隐式的this在前面(确切的说是this.)。只是有些时候,我们需要显式的写出,这种情况在Java面向对象㈠ -- 封装②进行讨论。

static是静态的意思,static可以修饰成员变量和成员函数,也可以直接修饰一段代码块。用static修饰的成员可以通过类名直接调用,当然通过实例对象也可以调用。
事实上被静态修饰的成员并不依赖于任何对象,它直属于当前类,并被类的所以实例对象共享。需要注意的是,静态成员可以被非静态调用,而不能直接调用非静态。静态中不允许出现this,super关键字。

通过下面一个例子,对Java的封装进行进一步扩展。
代码中主要涉及(静态,构造,局部)代码块,还有构造函数与this的用法。

public class Demo {
 private String name = "hehe";
 static{
  System.out.println("jingtai ...");
 }
 {
  System.out.println("gouzhao ...");
 }
 public Demo(){
  System.out.println("gouzhao ... hanshu");
 }
 public void say(){
  System.out.println(name);
 }
 public void say(String name){
  System.out.println(name);
  System.out.println(this.name);
 }
 public static void main(String[] args) {
  {
   System.out.println("jubu ...");
  }
  new Demo().say();
  new Demo().say("hao");
 }
}

输出结果:
jingtai ...
jubu ...
gouzhao ...
gouzhao ... hanshu
hehe
gouzhao ...
gouzhao ... hanshu
hao
hehe
当类进行加载的时候,静态就被加入内存,分配空间,包括静态代码块会被执行,并只有一次。
每次new创建对象的时候,构造代码块和构造函数会被执行。
类的成员变量和成员函数会被分配空间,并对成员函数进行默认的初始化。
在函数体内,单独的用{}括起的代码叫做局部代码块,只被执行一次。
在函数say中,声明了局部变量name,只是声明位置是在参数列表中。这是成员变量name就不会被访问到,
这里就可以用到this,即使用当前对象的name。实际上这就是成员变量和局部变量的范围问题。

Java面向对象㈠ -- 封装,布布扣,bubuko.com

时间: 2024-12-23 16:50:00

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

Java 面向对象-封装

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

Java面向对象--封装

封装:是把过程和数据包围起来,对数据的访问只能通过已定义的接口.面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治.封装的对象,这些对象通过一个受保护的接口访问其他对象.封装是一种信息隐藏技术,在java中通过关键字private实现封装.(字段私有化) 什么是封装?封装把对象的所有组成部分组合在一起,封装定义程序如何引用对象的数据,封装实际上使用方法将类的数据隐藏起来,控制用户对类的修改和访问数据的程度. 封装的例子: public class Man { //对属性的封装,一

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() 类自动