c#-面向对象

vs解决方案-右键属性-启动项目-当前选定内容
面向对象:封装、继承、多态;
1.对象可以叫做类的实例,字段是类的状态,如人这个类有姓名,年龄等字段,类不占内存,对象才占用内存。
2.public(任何地方都可以)、private(本类成员访问)、internal、protected;
3.属性开头字母大写,字段开头字母小写;只用set或者只用get就可以定义只读或者只写属性;可以为set、get设置访问级别;
字段和属性的区别:属性看似字段,不是字段,可以进行非法值控制,可以设置只读;
class Person1
    {
        //属性
        private int age;
        public int Age
        {
            set
            {
                if (value<0)
                {
                    return;
                }
                this.age = value;//value代表用户赋值过来的值
            }
            get
            {
                return this.age;
            }
        }
    }


    class Person2
    {//简写方式,编译自动添加private int age;字段,可以直接调用p1.Age=8;
        public int Age
        {
            get;
            set;
        }
    }
4.Demo1
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;


namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            Robot rb1 = new Robot();
            rb1.Name = "nima";
            rb1.Eat(5);
            rb1.SayHello();
            while (true)
            {
                String str=Console.ReadLine();
                rb1.Speak(str);
            }


            Console.ReadKey();
        }
    }
    class Robot
    {
        public String Name { get; set; }
        private int FullLevel { get; set; }
        public void SayHello()
        { 
            Console.WriteLine("我叫:"+Name);
        }
        public void Eat(int foodCount)
        {
            if (FullLevel > 100)
            {
                return;
            }
            FullLevel += foodCount;
        }
        public void Speak(String str)
        {
            if (FullLevel<0)
            {
                Console.WriteLine("饿屎了,不说了");
                return;
            }
            if (str.Contains("姓名")||str.Contains("名字"))
            {
                this.SayHello();
            }
            else if (str.Contains("女朋友"))
            {
                Console.WriteLine("我还小呢");
            }
            else
            {
                Console.WriteLine("听不懂");
            }
            FullLevel--;
        }
    }
}
5.对象的引用
int \datetime\bool\char等类型都属于值类型(ValueType),赋值的时候是传递拷贝;
普通的对象则是引用类型,赋值的时候是传递引用;


6.构造函数:用来创建对象的特殊函数,并且可以在构造函数中对对象进行初始化。如果不指定构造函数有一个默认的无参构造函数。如果制定了构造函数,则不再有默认的无参构造,如果需要无参构造,则需要自己写;


7.Exception类主要属性:Message、StackTrace;


8.常量名要大写;一定不会变化的值才声明为常量;(const)
static方法中可以调用其他static方法、字段、属性,但是不能调用非static方法、字段、属性。在非static方法中可以调用static的方法、字段;
静态成员不需要new就能使用;静态类一般用来实现一些函数库;
9.namespace用来解决类重名,
10.索引器
定义索引器的方式:
String this[int index]{
get{
return "";
}
set{

}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值