[目录][C#笔记]---第二节 面向对象

面向对象(OO,Object–Oriented)


在面向对象编程中要了解什么?


类,字段,属性,方法。
它的特性:封装,继承,多态。


什么是面向对象,面向对象的目的是什么?

我们做程序的目的是
1.降低软件开发的复杂度
    2.提高软件开发的效率
    3.提高软件质量:可维护性,可扩展性,可重用性等。


一,先来理解面向对象中的对象是什么?


(虚拟)假设我们要做一款游戏,游戏中有一个游戏人物A,A本身具有一定的生命值,玩家要移动A上下左右的移动。


A就是一个对象,A的生命值是A所具有的属性,A的移动是A所具有的动作(动作等于一个触发条件,到了这个触发条件就是执行一个方法)


(现实)现在有一个茶杯,具有重量,容量,形状,高度等属性。
假设这个茶杯是有盖子的,也就代表了,盖子是可以拿下来的,这样就必须有一个 拿下盖子 的方法。
这个茶杯也可以成为是一个对象。


所以,面向对象这个对象,指的是客体。所谓客体是 指客观存在实体(茶杯) 和 主观抽象的概念(游戏人物)。


二,为什么要使用面向对象?


还是原先的那款游戏,现在把 现实中存在的茶杯B 放进游戏中。


//游戏人物A
class A
{
  public int 生命;


  public viod 上(){};
  public viod 下(){};
  public viod 右(){};
  public viod 左(){};
}


//茶杯B
class B
{
  public int 重量;
  public int 容量;
  public int 高度;
  public string 形状;


  public viod 拿下盖子(){};
}


然后我们想让A找到B,并把B的盖子拿下来。


这时就需要在A中添加 找B的方法


//游戏人物A
class A
{
  public int 生命;


  public viod 上(){};
  public viod 下(){};
  public viod 右(){};
  public viod 左(){};


  public viod 找B(){};
}


//茶杯B
class B
{
  public int 重量;
  public int 容量;
  public int 高度;
  public string 形状;


  public viod 拿下盖子(){};
}


先,我们已经把找B的方法加到了class A中,但我们还需要一个触发的动作(点击茶杯),玩家点击茶杯后,执行 找B() 这个方法。


在 找B() 中A是有可能会移动的,先不管是如何找到的,就假定 找B() 这个方法找到B了。
找到B之后就把B的盖子拿下,这时就要执行B中 拿下盖子() 的这个方法。



类:

把 现实中的实体 和 抽象的概念 定义为对象,有一个容器可以把对象具有的方法,属性等包含起来。


对象实例:

在代码中:A a=new A(); 用new关键字来把 类(这个包含对象中方法和属性)起个名字。 这个就把 ‘a’ 这个符号当作游戏人物A。
同时,‘a’这个符号,也就具有了A的的生命值和上下左右的移动的方法。

当程序要知道A的生命值时只需要,a.生命 就行了。 而要执行 找B 的方法时, a.找B();


方法:是在类中定义的函数,一般而言,一个方法描述了对象可以执行的一个操作!


属性:是类中定义的变量,类的属性突出对象的状态。

类决定了对象将要拥有的属性和行为。

三,类(class)的使用


//声明一个类
public claas A(){
        //私有 只有在本类的作用域中可被访问
        private string name1;
        //保护 在本类和继承这个类的对象可被访问
        protected string Nmae1
        {
            get { return name1; }
            set { name1 = value; }
        }
        //在本程序集中可被访问,其他程序集引用时,无法访问
        internal void a() { }
        //公开
        public string this[int i]//索引器
        {
            get { return i.ToString(); }
            set { name1 = value; }
        }
}


//引用一个类,声明了一个对象实例a

A a = new A();
string s = a[1]; //s="1"
a[1] = "55"; //会把name1="55"
s = a[6]; //s="6"

s = a.Nmae1; //因为protected,所以不可访问,改为public时,结果:"55"



作者:FengYang

博客地址:http://blog.csdn.net/qq_28140365

版权声明:如果感觉文章哪里写的不对或者存在疑问,欢迎留言,共同学习、进步!

蓝色字体为链接
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值