面向对象(封装)get set的由来
封装:是指隐藏对象的属性和实现细节,进对外提供公共访问方式
好处:将变化隔离。便于使用,提高重用性,提高安全性
封装原则:将不需要对外提供的额内容隐藏起来,把属性都隐藏,提供公共方法对其访问
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的由来的更多相关文章
- Java面向对象㈠ -- 封装
Java的面向对象有三大特征:封装.继承.多态.这里主要对封装进行讲解. 封装可以理解为隐藏一个类的成员变量和成员函数,只对外提供需要提供的成员函数. Java的封装主要通过访问权限控制符:priva ...
- Atitit usbQb212 oo 面向对象封装的标准化与规范解决方案java c# php js
Atitit usbQb212 oo 面向对象封装的标准化与规范解决方案java c# php js 1.1. 封装性是面象对象编程中的三大特性之一 三个基本的特性:封装.继承与多态1 1.2. 魔 ...
- Atitit 面向对象 封装的实现原理
Atitit 面向对象 封装的实现原理 1.1. 动态对象的模拟使用map+函数接口可以实现1 1.2. 在用结构体 + 函数指针 模拟 对象 1 1.3. This指针..1 1.4. " ...
- java基础1.0::Java面向对象、面向对象封装、抽象类、接口、static、final
一.前言 一直以来都是拿来主义,向大神学习,从网上找资料,现在就把自己在工作中和学习中的所理解的知识点写出来,好记星不如烂笔头,一来可以作为笔记自己温习,二来也可以给走在求学之路的同学们一点参考意见, ...
- OC面向对象—封装
OC面向对象—封装 一.面向对象和封装 面向对象的三大特性:封装(成员变量).继承和多态 在OC语言中,使用@interface和@implementation来处理类. @interface就好像暴 ...
- python面向对象封装案例(附:is和==的区别)
面向对象封装案例 目标 封装 小明爱跑步 存放家具 01. 封装 封装 是面向对象编程的一大特点 面向对象编程的 第一步 —— 将 属性 和 方法 封装 到一个抽象的 类 中 外界 使用 类 创建 对 ...
- python-面向对象-04_面向对象封装案例
面向对象封装案例 目标 封装 小明爱跑步 存放家具 01. 封装 封装 是面向对象编程的一大特点 面向对象编程的 第一步 —— 将 属性 和 方法 封装 到一个抽象的 类 中 外界 使用 类 创建 对 ...
- python-面向对象-05_面向对象封装案例 II
面向对象封装案例 II 目标 士兵突击案例 身份运算符 封装 封装 是面向对象编程的一大特点 面向对象编程的 第一步 —— 将 属性 和 方法 封装 到一个抽象的 类 中 外界 使用 类 创建 对象, ...
- php面向对象 封装继承多态 接口、重载、抽象类、最终类总结
1.面向对象 封装继承多态 接口.重载.抽象类.最终类 面向对象 封装继承多态 首先,在解释面向对象之前先解释下什么是面向对象? [面向对象]1.什么是类? 具有相同属性(特征)和方法(行为)的一 ...
- 从普通函数到对象方法 ------Windows窗口过程的面向对象封装
原文地址:http://blog.csdn.net/linzhengqun/article/details/1451088 从普通函数到对象方法 ------Windows窗口过程的面向对象封装 开始 ...
随机推荐
- Tsung 初步介绍安装
tsung是erlang的一个开源的一个压力测试工具,可以测试包括HTTP, WebDAV, Mysql, PostgreSQL, LDAP, and XMPP/Jabber等服务器.针对 HTTP ...
- TP 接收post请求使用框架自带函数I()防止注入
<input id="dele_id[]" value="1" type="checkbox" /> <input id= ...
- 继承ViewGroup类
Android中,布局都是直接或间接的继承自ViewGroup类,其中,ViewGroup的直接子类目前有: AbsoluteLayout, AdapterView<T extends Adap ...
- 资源:Localization – 本地化
Resource Dictionary –资源字典 所有的资源项在最终都会被整合到Resource Dictionary中的,也就是说无论是FrameworkElement的Resources,还是W ...
- MySQL集群搭建
在集群中的所有主机上安装提供集群功能的软件包 官网上下载的 mysql-cluster-gpl-7.3.12-linux-glibc2.5-x86_64.tar.gz 规划了5台服务器,10.10. ...
- intellij idea 大内存优化配置 idea64.exe.vmoptions文件配置
-ea-server-Xms2G-Xmx4096M-Xss2m-XX:MaxMetaspaceSize=2G-XX:ReservedCodeCacheSize=1G-XX:MetaspaceSize= ...
- 用php動態產生各種尺寸的圖片
我的做法是用php動態產生各種尺寸的圖片,例如<img src="img.php?src=a.jpg&width=100&height=200"...< ...
- 【docker】学习笔记一:制作自己的centos6.9镜像
前言: 最近开始研究docker,在这里做一个记录. 本来开始想用centos7系列做镜像,毕竟是最新版本的centos,但是centos7有一个严重的bug,就是正常启动的镜像不能使用systemc ...
- Javascript代码收集
1.模仿jquery each 原文地址 function each(obj, fn){ var i; if(Object.prototype.toString.call(obj) === '[obj ...
- JavaScript:学习笔记(4)——This关键字
JavaScript:学习笔记(4)——This关键字 以前这篇帖子是关于闭包的,但是我想弄明白的其实是This关键字.JavaScript的this和Java等面向对象语言中的this大不一样,bi ...