关键词:
封装概述
概述
面向对象编程语言是对客观世界的模拟,客观世界里成员变量都是隐藏在对象内部的,外界无法直接操作和修改。 封装可以被认为是一个保护屏障,防止该类的代码和数据被其他类随意访问。要访问该类的数据,必须通过指定的方式。适当的封装可以让代码更容易理解与维护,也加强了代码的安全性。
原则
将属性隐藏起来,若需要访问某个属性,提供公共方法对其访问。
封装的步骤
- 使用 private 关键字来修饰成员变量。
- 对需要访问的成员变量,提供对应的一对 getXxx 方法 、setXxx 方法。
封装的操作—private关键字
private的含义
- private是一个权限修饰符,代表最小权限。
- 可以修饰成员变量和成员方法。
- 被private修饰后的成员变量和成员方法,只在本类中才能访问。
private的使用格式
- 使用 private 修饰成员变量,代码如下:
public class Student
// 成员变量
private String name;
private int age;
- 提供 getXxx 方法 / setXxx 方法,可以访问成员变量,代码如下:
public class Student
// 成员变量
private String name;
private int age;
// Getter Setter
public void setName(String n)
name = n;
public String getName()
return name;
public void setAge(int a)
age = a;
public int getAge()
return age;
封装优化1—this关键字
我们发现 setXxx 方法中的形参名字并不符合见名知意的规定,那么如果修改与成员变量名一致,是否就见名知意 了呢?代码如下:
public void setName(String name)
name = name;
public void setAge(int age)
age = age;
经过修改和测试,我们发现新的问题,成员变量赋值失败了。也就是说,在修改了setXxx() 的形参变量名后,方 法并没有给成员变量赋值!这是由于形参变量名与成员变量名重名,导致成员变量名被隐藏,方法中的变量名,无法访问到成员变量,从而赋值失败。所以,我们只能使用this关键字,来解决这个重名问题。
this的含义
this代表所在类的当前对象的引用(地址值),即对象自己的引用。 记住 :方法被哪个对象调用,方法中的this就代表那个对象。即谁在调用,this就代表谁。
this使用格式
使用 this 修饰方法中的变量,解决成员变量被隐藏的问题,代码如下:
public class Student
// 成员变量
private String name;
private int age;
// Getter Setter
public void setName(String name)
this.name = name;
public String getName()
return name;
public void setAge(int age)
this.age = age;
public int getAge()
return age;
封装优化2—构造方法
当一个对象被创建时候,构造方法用来初始化该对象,给对象的成员变量赋初始值。
构造方法的定义格式
构造方法的写法上,方法名与它所在的类名相同。它没有返回值,所以不需要返回值类型,甚至不需要void。使用构造方法后,代码如下:
public class Student
// 成员变量
private String name;
private int age;
// 无参数的构造方法
public Student()
System.out.println("无参构造方法执行啦!");
// 全参数的构造方法
public Student(String name, int age)
System.out.println("全参构造方法执行啦!");
this.name = name;
this.age = age;
注意事项
- 如果你不提供构造方法,系统会给出无参数构造方法。
- 如果你提供了构造方法,系统将不再提供无参数构造方法。
- 构造方法是可以重载的,既可以定义参数,也可以不定义参数。
标准代码—JavaBean
JavaBean 是 Java语言编写类的一种标准规范。符合JavaBean 的类,要求类必须是具体的和公共的,并且具有无 参数的构造方法,提供用来操作成员变量的set 和get 方法。
public class ClassName
//成员变量
//构造方法
//无参构造方法【必须】
//有参构造方法【建议】
//成员方法
//getXxx()
//setXxx()
编写符合JavaBean 规范的类,以学生类为例,标准代码如下:
public class Student
// 成员变量
private String name;
private int age;
// 无参数的构造方法
public Student()
System.out.println("无参构造方法执行啦!");
// 全参数的构造方法
public Student(String name, int age)
System.out.println("全参构造方法执行啦!");
this.name = name;
this.age = age;
// Getter Setter
public void setName(String name)
this.name = name;
public String getName()
return name;
public void setAge(int age)
this.age = age;
public int getAge()
return age;
面向对象编程基本部分——java三大特性详解(代码片段)
...迎的重要原因 本文我们就来简单说说 封装继承多态这三大面向对象重要特征 封装一封装是什么简而言之,封装就是把抽象出来的数据【 查看详情
java基础1:深入理解java面向对象三大特性(代码片段)
本文会结合虚拟机对引用和对象的不同处理来介绍三大特新的原理--------------继承 封装 多态继承:Java中的继承只能单继承,但是可以通过内部类继承其他类来实现多继承。封装:封装主要是因为Java有访问权限的控... 查看详情
java中面向对象的三大特性之封装
封装封装(英语:Encapsulation)是指一种将抽象性函式接口的实现细节部份包装、隐藏起来的方法。封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码随机访问。要访问该类的代码和数据,必须通过严... 查看详情
java面试题详解一:面向对象三大特性(代码片段)
一,多态:1.面向对象四大基本特性:抽象,封装,继承,多态抽象,封装,继承是多态的基础。多态是抽象,封装,继承的表现。2.什么是多态不同类的对象对同一消息作出不同的响应叫做多态3.多态的作用简单来说:解藕。详... 查看详情
面向对象三大特性(代码片段)
面向对象三大特性1.面向对象的三大特性:继承,封装,多态封装:将一堆代码或者数据等放到一个空间中,并且可以使用多态:同一个对象,多种形态.(python默认支持多态)封装:根据职责将属性和方法封装到一个抽象的类中继承:实现代码... 查看详情
面向对象的三大特性之封装(代码片段)
#面向对象的三大特性之封装#第一个层面的封装:类就是麻袋,这本身就是一种封装#第二个层面的封装:类中定义私有的,只在类内部使用,外部无法访问#约定一:任何以单下划线开头的名字都应该是内部的,私有的#约定二:... 查看详情
java面向对象(oop)--面向对象三大特性之一:封装(封装的步骤作用和意义方法重载)(代码片段)
1.封装我要看电视,只需要按一下开关和换台就可以了。有必要了解电视机内部的结构吗?有必要碰碰显像管吗?制造厂家为了方便我们使用电视,把复杂的内部细节全部封装起来,只给我们暴露简单的接口... 查看详情
面向对象三大特性之封装(代码片段)
1、定义【封装】 隐藏对象的属性和实现细节,仅对外提供公共访问方式。广义上的封装:属于一个类的静态和动态属性总是出现在一个类中使用时永远用类名或者对象名调用狭义上的封装:就是把变... 查看详情
第十篇:面向对象系列之三大特性(代码片段)
本篇主要介绍面向对象的三大特性及封装、继承、多态。一、封装 第一层意义上的封装: 封装:从封装本身的理解,装--将一系列东西(苹果、梨子、香蕉等)一股脑的塞进一个盒子内,而封--自然就是密封,即... 查看详情
面向对象三大特性:继承封装多态(代码片段)
继承:即子类可以继承父类的除了所有属性、方法外的所有内容。子类继承父类,只需要在类名后面加上(父类名)即可。如下定义一个父类,AnimalsclassAnimals:pass再定义一个子类cat,继承父类Animalsclasscat(Animals):pass这样cat类即可继... 查看详情
面向对象三大特性——封装(含property)(代码片段)
封装是面向对象的特征之一,是对象和类概念的主要特性。封装概念 封装就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。隐藏属性 在python中... 查看详情
java中面向对象三大特性之——多态(代码片段)
...态的概述: 多态是继封装、继承之后,面向对象的第三大特性。生活中,比如跑的动作,小猫、小狗和大象,跑起来是不一样的。再比如飞的动作,昆虫、鸟类和飞机,飞起来也是不一样的。可见,同一行为,通过不同的事... 查看详情
面向对象三大特性之封装与多态(代码片段)
一、封装最主要的作用:隐藏对象的属性和实现细节,仅对外提供公共访问方式封装原则将不需要对外提供的内容都隐藏起来把属性都隐藏,提供公共方法对其访问在python中用双下划线开头的方式将属性隐藏起来(设置成私有的... 查看详情
面向对象三(三大特性)(代码片段)
封装,继承,多态一: 了解什么是封装: 就象一个盒子,你不需要知道里面有什么东西,只知道它有那些用处就行,能够为你提供相对应的方法.封装的意义:封装的意义在于保护或者防止代码(数据)被我们无意中破坏。保护... 查看详情
java三大特性之一--封装
java三大特性性:封装继承和多态
一、封装 封装是指隐藏对象的属性及实现细节,对外仅提供接口可见。封装实现了信息隐藏,利于软件复用。其优点是达到了模块化的标准,从而提高了代码的复用程度。在某种程度上,封装也大大改善了软件开发的可维护... 查看详情
java中的三大特性
我们都知道Java中有三大特性,那就是继承,封装和多态。那我今天我就来说说这几个特性。老样子,先问问自己为什么会存在这些特性。首先说封装,封装就是使用权限修饰符来实现对属性的隐藏,同时提供一些共有的get/set方... 查看详情
面向对象三大特性之封装(代码片段)
面向对象三大特性之封装一、继承json模块,并派生出新的功能继承json模块中的JSONEncoder,并派生出新的功能importjsonfromdatetimeimportdate,datetime#在原来json模块中可序列化的数据型优先#print(type(datetime.now()))#<class'datetime.datetime'&... 查看详情