新手求教,类与继承中的小问题

问题描述

在学习这章节内容时,有一点没明白,那就是public与private的定义首先说类,为了体现面向对象,书中例子是,定义一个类,类中定义员工属性no,name,age以及address,然后在前端页面调用并赋值,所以类中有针对属性的get,set,代码如下:namespaceC03Ex02{publicclassEmployee{privatestring_no;privatestring_name;privateint_age;privatestring_address;publicstringE_no{get{return_no;}set{_no=value;}}publicstringE_name{get{return_name;}set{_name=value;}}publicintE_age{get{return_age;}set{_age=value;}}publicstringE_address{get{return_address;}set{_address=value;}}publicvoidWorkOn{}publicvoidWorkOff{}}}好了,小问题来了,为什么在这个类中,先要用private,然后在用public?为了防止其它类中变量名冲突问题吗??发现即便是公共属性类,也有此写法,是我所描述的原因吗?等待答复

解决方案

解决方案二:
这是一个私有成员(Field)privatestring_no;这是私有成员_no对应的属性(Property)publicstringE_no{get{return_no;}set{_no=value;}}这样做,是可以保持Employee的封闭性,隐藏其内部实现。在新版的NET里,可以用这样的方式实现:publicstringE_no{get;set;}
解决方案三:
public是对外的访问的,private那个是自己内部用的,你还是好好学习一下面向对象的概念吧
解决方案四:
谢谢楼上2位的答复
解决方案五:
privatestring_no;//字段私有,防止外部调用//属性公有,给外部调用publicstringE_no{get{return_no;}set{_no=value;}}当然也可以省略为:publicstringE_no{get;set;}
解决方案六:
privatestring_no是私有字段publicstringE_no是公有属性公有属性对私有字段封装(隐藏具体实现过程),其它类访问公有属性
解决方案七:
此谓之访问器(getter)和设置器(setter)它们的存在时有道理的:(1)如果你将字段直接暴露为public,那么它很有可能被赋以错误的值,但设置器可以避免这的。(2)如果你想字段的值变化了触发某个事件的话,那么setter也很容易帮你做的。(3)某些字段,有时候需要智能被内部修改,但可以被外部访问例如(1)classperson{privateintage;publicintAge{set{if(value>0&&value<100)age=valueelse//TODO错误处理}get{returnage;}}}(2)classperson{privateintage;publicintAge{set{if(value>0&&value<100)age=valueelse//TODO错误处理//TODOage被改变的事件}get{returnage;}}}(1)classperson{privateintage;publicintAge{privateset{//age只能在内部被修改if(value>0&&value<100)age=valueelse//TODO错误处理}get{returnage;}}}

时间: 2024-08-03 06:09:43

新手求教,类与继承中的小问题的相关文章

安卓应用开发-安卓新手求教类的问题

问题描述 安卓新手求教类的问题 最近学习安卓蓝牙开发,看到如下代码,ba = BluetoothAdapter.getDefautAdapter(),以前学c++感觉函数调用都是用对象来调用,而BluetoothAdapter是个类,没实例化,为啥可以这么用? 解决方案 getDefautAdapter()在这个内部肯定有实例化的. 看java设计模式之工厂模式 解决方案二: 由于 BT 是一个硬件,不可能被多个实例!所以,不能给每个应用都来实例化.getDefautAdapter 中引用 BT

新手求教如何把textbox中的值通过按钮提交到数据库中

问题描述 这是一个简单的注册页面我该如何将里面的输入的值,通过按钮实现,提交到数据库中呢,我是个超级白痴--,啥都不懂,大神们任意回答把 解决方案 解决方案二:1:熟悉asp.net的常用控件.2:如果是Sqlserver数据库搜索有关Sqlserver的CRUD操作.3:搜索C#ADO.Net操作数据库.解决方案三:请先基础学习,没基础就上手是危楼解决方案四:stringsqlstr=System.Configuration.ConfigurationManager.AppSettings["

intellij idea-新手求教!IntelliJ IDEA中打开或者导入新的项目时的注意点和相关操作?发布和访问?

问题描述 新手求教!IntelliJ IDEA中打开或者导入新的项目时的注意点和相关操作?发布和访问? 怎样决定和设置和添加maven的本地仓库和远程仓库...................................................

图片-新手求教,网页中的大图轮播(翻书)效果

问题描述 新手求教,网页中的大图轮播(翻书)效果 最好是jquery写的大图轮播效果,但是图片滚动效果是翻书的样子,左翻和右翻都要能实现 解决方案 http://www.jb51.net/article/71301.htm 解决方案二: 苏小喵的有点生硬,要是能想flash那样很自然的翻页就好了

在JavaScript中模拟类(class)及类的继承关系_javascript技巧

Javascipt语法不支持"类"(class)[es6已经支持],但是有模拟类的方法.今天我主要谈谈Javascipt中模拟"类"的方法及js中继承的总结和回顾. js中实现"类"与继承,既是重点,又是难点.很多同学可能都对js中"类"与继承都有所了解,但是深入剖析的时候,感觉力不从心.模棱两可. 我们先来总结一下js定义"类"的几种方法: 方法一:构造函数法 这个方法是比较经典的方法,我们会经常见到.生

新手求教c语言在DEV C++中运行问题

问题描述 新手求教c语言在DEV C++中运行问题 ![ 为啥我所有的if语句都是不执行的,新手小白求教. 换成最简单的逻辑了还是不行,所有的if都不执行,全角半角的问题注意了并没有用 ----------------------------------问题来了,printf出来abc这时候是1,0,0 解决方案 你打印一下a,b,c看看,你输入的时候有逗号,空格,是不是导致b,c没有获取到实际的数字 解决方案二: 你输入的a= 1,b=2,c=3,第一步判断a是否比b大,答案是否定的,所以执行

调用自定义资源-新手求教,请问如何调用resx中的自定义资源,没有金币,谢谢大家

问题描述 新手求教,请问如何调用resx中的自定义资源,没有金币,谢谢大家 如图,我往资源文件FP.zh-Hans.resx里边加了一个key叫"zzz",值是"啦啦啦",请问代码该如何掉用之,请大侠指点一二 解决方案 ResourceManager rm = new ResourceManager("MissionPlanner.GCSViews.FlightPlanner.zh-Hans.resx", System.Reflection.As

编辑器-新手求教如何基于Jh0tdr0w写小程序

问题描述 新手求教如何基于Jh0tdr0w写小程序 新手求教如何基于Jh0tdr0w写一个简短的电路图编辑器,需要有一个灯泡和电池,电线连接后灯泡可以点亮. 小弟实在看不懂啊 解决方案 http://www.pudn.com/downloads74/sourcecode/java/detail270257.html

vista-VISTA上安装IBM DB2总是启动不了,各位我是新手,求各位大神指点我这迷途中的小羔羊

问题描述 VISTA上安装IBM DB2总是启动不了,各位我是新手,求各位大神指点我这迷途中的小羔羊 每当我点开的时候就会弹出这个,是我哪里设置错误?我是用安装向导安装的 解决方案 vista是一个失败的系统,因为份额极小,几乎厂商都不会再做和它的兼容性支持,建议在win7下试试. 解决方案二: 电脑用win7太弱了,这个IBM DB2我查了下是支持VISTA的.但是就是会出现这个,我又下了个msvcp110.dll还是失败了,不知道大神们有没有知道原因的呢 解决方案三: 最后,由于我糟了很多罪