面向对象的三个特性:封装、继承、多态。
类,对象。 例如:"人"是类,"张三"是"人"这个类的对象。类是抽象的,对象时具体的。对象可以叫
做类的实例。字段(和类相关的变量),字段就是类的状态。人这个类中有姓名、年龄、身高等字段。
类不占内存,对象才占内存。
方法,就是类能够执行的动作。比如问好、吃饭等。
类的继承,类之间可以有继承关系,比如"电脑"类可以从电器类继承,这样的好处是"电脑"类只需要
字段、方法、属性都可以叫做类的成员,他们都需要定义访问级别。访问级别的用处在于控制在哪些
地方可以被访问,这样达到面向对象中"封装"的目的。
public :在任何地方被访问
internal:本项目中被访问
private:本类中被访问
preotected:本类和子类中访问
在类中定义变量和方法时,没写访问修饰符,那么默认的访问修饰符为private。
在类级别,不写访问修饰符默认为internal。
属性
class Person
{
private int age;
public int Age //Age没有保存数据,都保存到age中
{
get{ return this.age;} //取值
set{ this.age=value; } //赋值,value代表用户赋值过来的值
//可简写为:get;set; //编译器自动帮我们生成私有字段和set,get代码块。
}
}
public class MainClass
{
public static void Main()
{
Person p=new Person();
p.Age=23;
Console.WriteLine("年龄{0}",p.Age);
Console.ReaKey();
}
}
对象的引用
int,datetime,bool,char等类型都是值类型(ValueType),赋值的时候是传递拷贝。
普通的对象则是引用类型,赋值的时候是传递引用。传递给函数也是引用传递的。
例:
int i=10;
int j=i;
i++;
Console.WriteLine(j); //输出结果为:10
Person p=new Person(10);
Person p1=p; //指向同一个对象
p.Age++;
Console.WriteLine(p1.Age); //输出结果为:11
类,对象。 例如:"人"是类,"张三"是"人"这个类的对象。类是抽象的,对象时具体的。对象可以叫
做类的实例。字段(和类相关的变量),字段就是类的状态。人这个类中有姓名、年龄、身高等字段。
类不占内存,对象才占内存。
方法,就是类能够执行的动作。比如问好、吃饭等。
类的继承,类之间可以有继承关系,比如"电脑"类可以从电器类继承,这样的好处是"电脑"类只需要
定义自己特有的字段、方法就可以,也就是只要定义内存大小、CPU型号这些字段或弹出光驱等方法就
可以。
父类、基类(基业,祖宗十八代传下来的)。电脑类是电器类的子类。
字段、方法、属性都可以叫做类的成员,他们都需要定义访问级别。访问级别的用处在于控制在哪些
地方可以被访问,这样达到面向对象中"封装"的目的。
public :在任何地方被访问
internal:本项目中被访问
private:本类中被访问
preotected:本类和子类中访问
在类中定义变量和方法时,没写访问修饰符,那么默认的访问修饰符为private。
在类级别,不写访问修饰符默认为internal。
属性
class Person
{
private int age;
public int Age //Age没有保存数据,都保存到age中
{
get{ return this.age;} //取值
set{ this.age=value; } //赋值,value代表用户赋值过来的值
//可简写为:get;set; //编译器自动帮我们生成私有字段和set,get代码块。
}
}
public class MainClass
{
public static void Main()
{
Person p=new Person();
p.Age=23;
Console.WriteLine("年龄{0}",p.Age);
Console.ReaKey();
}
}
对象的引用
int,datetime,bool,char等类型都是值类型(ValueType),赋值的时候是传递拷贝。
普通的对象则是引用类型,赋值的时候是传递引用。传递给函数也是引用传递的。
例:
int i=10;
int j=i;
i++;
Console.WriteLine(j); //输出结果为:10
Person p=new Person(10);
Person p1=p; //指向同一个对象
p.Age++;
Console.WriteLine(p1.Age); //输出结果为:11