封装:是指隐藏对象的属性和实现细节,进对外提供公共访问方式

好处:将变化隔离。便于使用,提高重用性,提高安全性

封装原则:将不需要对外提供的额内容隐藏起来,把属性都隐藏,提供公共方法对其访问

 package com_package2;

     class Age {
int age;
/*/ public void Haha(int t)
//{ if(t>=0)
// age=t;
else
age=0;
}
// public int getHaha(int t)
// {
// return t; // }**/
void speak()
{
System.out.println("age="+age); } }

首先注意观察:Age类中的属性age没有说公有,也没有说私有,再加上这个类也没说是私有和公有,那么这个属性是不受保护的,创建对象后,age是可以被改动也可以被访问的

但是如果age属性变成了private那么AgeDemo是无法访问到age属性的

 package com_package2;

 public class AgeDemo {
public static void main(String[]args)
{
Age a = new Age();//创建对象
//a.Haha(20);
a.age=20;//访问Age类中的年龄属性
a.speak();//访问Age类中的speak方法 } }

这里的age是不被保护的

再来看,要是想要访问private属性,那么,可以在中间加一个给属性赋值的public方法如下:

 package com_package2;

     class Age {
private int age;
public void Haha(int t)
{ age=t;
}
// public int getHaha(int t)
// {
// return t; // }
void speak()
{
System.out.println("age="+age); } }

在这里面,age是私有的其他类无法访问,但是加了一个public方法来对age属性进行赋值

 package com_package2;

 public class AgeDemo {
public static void main(String[]args)
{
Age a = new Age();
//a.Haha(20);
a.Haha(20);
a.speak(); } }

通过Haha对age进行访问得到age=20

在此基础上可以增加一点算法:

 package com_package2;

     class Age {
private int age;
public void Haha(int t)
{ if(t>=0&&t<=130)
age=t;
else
age=-1;
}
// public int getHaha(int t)
// {
// return t; // }
void speak()
{
System.out.println("age="+age); } }
 package com_package2;

 public class AgeDemo {
public static void main(String[]args)
{
Age a = new Age();
//a.Haha(20);
a.Haha(-20);
a.speak(); } }

这样就可以判断年龄的可能性  得-1

由此演变成get set方法:

 package com_package2;

     class Age {
private int age;
public void setAge(int t)
{ if(t>=0&&t<=130)
age=t;
else
age=-1;
}
public int getAge(int t)
{
return t; }
void speak()
{
System.out.println("age="+age); } }
 package com_package2;

 public class AgeDemo {
public static void main(String[]args)
{
Age a = new Age();
//a.Haha(20);
a.setAge(-20);
a.speak(); } }

这样的演变就足以说明set,get方法的由来。通常情况下,会将类中的成员变量私有化,为了避免属性直接被访问导致数据错误,并对外界听了公共的访问方式,对该

属性进行访问,这样做的好处是:可以对属性进行可控,而对属性访问的公共方法名称规范定义的格式是:set属性(),get属性()。当然get(),set()都可以在系统中手动生成。

关于这两个方法:Java中的私有属性set()是给属性赋值的,get()是取得属性值的
被设置和存取的属性一般是私有
主要是起到封装的作用,不允许直接对属性操作
set()和get()不一定同时存在,看程序需求

面向对象(封装)get set的由来的更多相关文章

  1. Java面向对象㈠ -- 封装

    Java的面向对象有三大特征:封装.继承.多态.这里主要对封装进行讲解. 封装可以理解为隐藏一个类的成员变量和成员函数,只对外提供需要提供的成员函数. Java的封装主要通过访问权限控制符:priva ...

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

    Atitit usbQb212 oo 面向对象封装的标准化与规范解决方案java c# php js 1.1. 封装性是面象对象编程中的三大特性之一  三个基本的特性:封装.继承与多态1 1.2. 魔 ...

  3. Atitit 面向对象  封装的实现原理

    Atitit 面向对象  封装的实现原理 1.1. 动态对象的模拟使用map+函数接口可以实现1 1.2. 在用结构体 + 函数指针 模拟 对象 1 1.3. This指针..1 1.4. " ...

  4. java基础1.0::Java面向对象、面向对象封装、抽象类、接口、static、final

    一.前言 一直以来都是拿来主义,向大神学习,从网上找资料,现在就把自己在工作中和学习中的所理解的知识点写出来,好记星不如烂笔头,一来可以作为笔记自己温习,二来也可以给走在求学之路的同学们一点参考意见, ...

  5. OC面向对象—封装

    OC面向对象—封装 一.面向对象和封装 面向对象的三大特性:封装(成员变量).继承和多态 在OC语言中,使用@interface和@implementation来处理类. @interface就好像暴 ...

  6. python面向对象封装案例(附:is和==的区别)

    面向对象封装案例 目标 封装 小明爱跑步 存放家具 01. 封装 封装 是面向对象编程的一大特点 面向对象编程的 第一步 —— 将 属性 和 方法 封装 到一个抽象的 类 中 外界 使用 类 创建 对 ...

  7. python-面向对象-04_面向对象封装案例

    面向对象封装案例 目标 封装 小明爱跑步 存放家具 01. 封装 封装 是面向对象编程的一大特点 面向对象编程的 第一步 —— 将 属性 和 方法 封装 到一个抽象的 类 中 外界 使用 类 创建 对 ...

  8. python-面向对象-05_面向对象封装案例 II

    面向对象封装案例 II 目标 士兵突击案例 身份运算符 封装 封装 是面向对象编程的一大特点 面向对象编程的 第一步 —— 将 属性 和 方法 封装 到一个抽象的 类 中 外界 使用 类 创建 对象, ...

  9. php面向对象 封装继承多态 接口、重载、抽象类、最终类总结

    1.面向对象 封装继承多态  接口.重载.抽象类.最终类 面向对象 封装继承多态  首先,在解释面向对象之前先解释下什么是面向对象? [面向对象]1.什么是类? 具有相同属性(特征)和方法(行为)的一 ...

  10. 从普通函数到对象方法 ------Windows窗口过程的面向对象封装

    原文地址:http://blog.csdn.net/linzhengqun/article/details/1451088 从普通函数到对象方法 ------Windows窗口过程的面向对象封装 开始 ...

随机推荐

  1. [Python]xlrd 读取excel 日期类型2种方式

    有个excle表格须要做一些过滤然后写入数据库中,可是日期类型的cell取出来是个数字,于是查询了下解决的办法. 主要的代码结构 data = xlrd.open_workbook(EXCEL_PAT ...

  2. POJ2407_Relatives【欧拉phi函数】【基本】

    Relatives Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 11422 Accepted: 5571 Descriptio ...

  3. freetype下载和配置

    一 下载编译freetype库 1 下载 地址:http://www.freetype.org/ 得到压缩文件:freetype-2.5.3.tar.gz 2 解压: 直接解压,得到文件夹freety ...

  4. python cookbook第三版学习笔记二:字典

    一般来说字典中是一个键对应一个单值的映射,如果想一个键值映射多个值,那么就需要将这些值放到另外的容器中,比如列表或者集合. 比如d={'a':[1,2]} Collections中的defaultdi ...

  5. Drupal 安装过程

    php.ini 文件 https://drupal.stackexchange.com/questions/164172/problem-installing-in-local-the-transla ...

  6. Data Structure Binary Search Tree: Inorder Successor in Binary Search Tree

    struct node { int val; node *left; node *right; node *parent; node() : val(), left(NULL), right(NULL ...

  7. SQL语句性能优化操作

    1.对查询进行优化,应尽量避免全表扫描,首先应考虑在where及order by涉及的列上建立索引. 2.应尽量避免在where子句中对字段进行null值判断,创建表时NULL是默认值,但大多数时候应 ...

  8. g2o求解BA 第10章

    1.g2o_bal_class.h1.1 projection.hg2o还是用图模型和边,顶点就是相机和路标,边就是观测,就是像素坐标.只不过这里的相机是由旋转(3个参数,轴角形式,就是theta*n ...

  9. Window7 环境下 MariaDB 的安装 及使用

    MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可.开发这个分支的原因之一是:甲骨文公司收购了MySQL后,有将MySQL闭源的潜在风险,因此社区采用分支的方 ...

  10. c# wpf ComboBox 动态下拉框 及 动态默认值设定

    1.下拉框声明 <ComboBox x:Name="DirComboBox" Width="150" Height="18" Marg ...