C#面向对象基础01
面向对象不是取代面向过程的
类、对象。"人"是类,"张三"是人这个类的对象。
类是抽象的,对象是具体的。按钮就是类,某个按钮就是对象。对象可以叫做类的实例。类就像int,对象就像10.字段field(和某个对象相关的变量),字段就是类的状态。人这个 类有姓名、年龄、身高等字段。类不占内存,对象才占内存。
方法:方法就是累能够执行的动作,比如问好、吃饭等。
类的继承,类之间可以有继承关系,比如电脑类可以从"
电器"类继承,这样的好处是"电脑"类只需要定义自己特有的字段、方法就可以,也就是只要定义了内存大小,cpu型号这些字段或者弹出光驱等方法 就可以。父类。基类。电脑类是电器类的子类。重用。
面向对象的三个特征:封装、继承、多态。
没有现象对象的世界中的难题。
成员访问级别
字段、方法、属性都可以叫做类的成员,他们都需要定义访问级别。访问级别的用处在于控制成员在哪些地方可以被访问,这样达到面向对象中"封装"的目的
几个访问级别:public(任何地方都可以访问);privae(默认级别。只能由本类中的成员访问)。还有internal/protected两个级别,以后会讲。
class Person{
private string Name;
public void GiveName(string name){
Name=name;//拒绝不好听的名字
}
public void SayHello(){
Console.WriteLine("你好,我是{0}",Name);
}
}
Person tom=new Pewson();
tom.GiveName("tom");
//tom.Name="tom";
tom.SayHello();
永远不要把字段public
属性
惯用法:属性开头字母大写,字段开头字母小写
class Person
{
private int age;
public int Age
{
get{return age;}
set{age=value;}
}
public void SayHello()
{
Console.WriteLine("我的年龄是{0}",Age);
}
}
只用set或者只用get就可以定义只读或者只写属性(只写的不常见)
可以为set、get设置访问级别
例子,限制非法值的设置
字段和属性的区别是什么?属性看似字段、不是字段,可以进行非法值控制,可以设置只读。
set/get块内部其实就是get_***/set_***方法。
面向对象04
面向对象版聊天机器人
机器人呢有不同的名字、维护自己的FullLevel,可以SayHello(我叫***),可以喂食(Eat(int foodCount)),可以对它说话(Speak),对异常情况(错误的喂饭数字,喂得太多会撑死了)进行处理,有两个机器人供选择,一开始通过1、2数字选择聊天机器人。
Reflector 反编译器在vs的什么地方,怎么找不到呀?
面向对象编程基础8 构造函数
构造函数用来创建对象,并且可以在构造函数中对对象进行初始化
构造函数式用来创建对象的特殊函数,函数名和类名一样,没有返回值,连void都不用。
构造函数可以有参数,new对象的时候传递函数参数即可
构造函数可以重载,也就是有多个参数不同的构造函数。
如果不指定构造函数,则类有一个默认的无参构造函数。
如果指定了构造函数,则不在有默认的无参构造函数,如果需要无参构造函数,则需要自己来写。
面向对象编程基础10 继承
public class Chinese Person
{
public string HuKou{get;set;}
public void KongFu(){......}
}
Chinese p1=new Chinese();
p1.Name="李雷";
p1.HuKou="北京朝阳区";
p1.SayHello();
p1.KongFu();
定义类的时候不指定父类,则父类是Object类,Object类是任何类
的直接或者间接父类。
异常与异常处理
传统的错误表示方式:错误码。举例。需要知道不同错误码的含义,如果不处理错误码,则程序可能陷入不可以预知的错误。
错误码的缺点::不处理则很难发现,每次处理则很麻烦;
难以看出错误的原因;容易使得程序进入不确定状态。
try catch.Exception ex异常也是对象。
Exception 类主要属性:Message/StackTrace
发生异常后程序默认就退出了,后续代码不会执行。
catch以后的代码则会继续执行。
不要吃掉异常
扔出自己的异常
常量与静态成员
Const常量。常量名要大写。一定不会变的声明成常量。
全局变量。static类变量。
不用new就能用的方法:static方法,static方法其实就是普通函数。
在static 方法中可以调用其他static方法、字段、属性。在非static方法中可以调用static的方法、字段。
静态类,不能被new的类就是静态类。静态类一般用来实现一些
函数库。***Helper,SqlHelper,PageHelper
命名空间
namespace(命名空间),用于解决类重名问题,可以看做"类的文件夹"
在代码中使用其他类的时候需要using类所在的namespace.
System.Collections.ArrayList,快速引入的方法,右键--->解析
。
为什么使用Convert/Console等类不需要自己写using?
如果代码和被使用的类在一个namespace则不需要using.
可以修改默认的namespace,因此不要认为在相同文件夹下就不用using,不在相同文件夹下就需要using.
索引器
C#中提供了按照索引器进行访问的方法
定义索引器的方式:string this[int index]{get{return "";}
set {}},string为索引器的类型,[]中是参数列表。进行索引器写操作就是调用set代码块,在set内部使用Value得到用户设置的值;进行读操作就执行get代码块。
索引器参数可以不止一个,类型也不限于int,几乎可以是任意类型
C#面向对象基础01的更多相关文章
- java基础学习05(面向对象基础01)
面向对象基础01 1.理解面向对象的概念 2.掌握类与对象的概念3.掌握类的封装性4.掌握类构造方法的使用 实现的目标 1.类与对象的关系.定义.使用 2.对象的创建格式,可以创建多个对象3.对象的内 ...
- 081 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 06 new关键字
081 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 06 new关键字 本文知识点:new关键字 说明:因为时间紧张,本人写博客过程中只是 ...
- 080 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 05 单一职责原则
080 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 05 单一职责原则 本文知识点:单一职责原则 说明:因为时间紧张,本人写博客过程中只是 ...
- 079 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 04 实例化对象
079 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 04 实例化对象 本文知识点:实例化对象 说明:因为时间紧张,本人写博客过程中只是对知 ...
- 078 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 03 创建类
078 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 03 创建类 本文知识点:创建类 说明:因为时间紧张,本人写博客过程中只是对知识点的关 ...
- 077 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 02 类和对象
077 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 02 类和对象 本文知识点:类和对象 说明:因为时间紧张,本人写博客过程中只是对知识点 ...
- 076 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 01 Java面向对象导学
076 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 01 Java面向对象导学 本文知识点:Java面向对象导学 说明:因为时间紧张,本人 ...
- python面向对象基础-01
面向对象(OOP)基本概念 前言 话说三国时期曹军于官渡大败袁绍,酒席之间,曹操诗兴大发,吟道:喝酒唱歌,人生真爽! 众将直呼:"丞相好诗",于是命印刷工匠刻板印刷以流传天下; 待 ...
- java基础学习05(面向对象基础01--类实例分析)
面向对象基础01(类实例分析) 实现的目标 1.如何分析一个类(类的基本分析思路) 分析的思路 1.根据要求写出类所包含的属性2.所有的属性都必须进行封装(private)3.封装之后的属性通过set ...
随机推荐
- Linux内核系列—C语言中内嵌汇编 asm __volatile__,asm__volatile_【转】
转自:http://www.bkjia.com/Androidjc/1109412.html 在内嵌汇编中,可以将C语言表达式指定为汇编指令的操作数,而且不用去管如何将C语言表达式的值读入哪个寄存器, ...
- java 反编译插件 JD-Eclipse 和 JD-IntelliJ
去官网 : http://jd.benow.ca/ 找到 JD-Eclipse 和 JD-IntelliJ,下载,前者安在eclipse上,后者安在as上.
- PHP empty函数判断0返回真还是假?
最近项目中,遇到一个字段是 “是否启用”值为0,1 在查询时没想就写了 if ( isset($args_array['useFlg']) && !empty($args_array[ ...
- System.Linq.Dynamic
http://dynamiclinq.codeplex.com/ 10万回 用动态表达式 0.19s ,普通Lamba 0.02s,效率还可以 /* User: Peter Date: 2016/4/ ...
- 使用tdcss.js轻松制作自己的style guide
http://jakobloekke.github.io/tdcss.js/ 在前端开发中,如果能够有一个style guide对于设计来说就显得专业稳定,一致性.在上述链接中,有一个tdcss.js ...
- SVG 动画实现弹性的页面元素效果
Codrops 分享了一些给SVG元素加上弹性动画的灵感.实现的思路是把一个SVG元素整合成一个组件,然后从一个路径弹性动画到另一个.这种效果可以应用到像菜单,按钮或其它元素,使得交互更有趣,看起更原 ...
- UVa 10905 Children's Game
注意!这不是单纯的字典序排序,比如90.9,应该是990最大 对字符串排序蛋疼了好久,因为别人说string很慢,所以一直没有用过. 看别人用string还是比较方便的,学习一下 对了,这里的cmp函 ...
- Asp.net中的HttpModule和HttpHandler的简单用法
在Asp.net中,HttpModule和HttpHandler均可以截取IIS消息进行处理,这使得我们制作人员能够非常方便的进行诸如图片水印添加,图片盗链检查等功能. 下面先就HttpModule的 ...
- Java Socket 模拟HTTP请求
public static void main(String[] args) { try { String url = "192.168.1.103"; Socket socket ...
- #1406 - Data too long for column (转)
转自:(http://blog.sina.com.cn/s/blog_5115a74c01008e40.html) ERROR (): Data too long for column 解决方法 修改 ...