【C#】面向对象的简单介绍
对象和类的基础知识
对象是看得到摸得着的,具体特指的一个具体实体。
类是模子,确定对象将会拥有的特征(属性)和行为(方法)。
类是对象的类型,类不占有内存,对象占有内存。
类的定义
类中可以包含变量的定义和方法
//新建一个类
public class Person
{
public string _name;
public char _gender;
public int _age;
public void SayHello()
{
Console.WriteLine("hello,大家好,我是人");
}
public void walk()
{
Console.WriteLine("我走路");
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
类的实例化
使用关键字new
语法: 类 实例名=new 类();
类的成员的访问
实例名.属性 实例名.方法名();
class Program
{
static void Main(string[] args)
{
Person per = new Person();
per._name = "张三";
per._age = 18;
per._gender = '男';
per.SayHello();
per.walk();
Console.WriteLine(per._name);
Console.ReadKey();
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
属性
字段、方法、属性都可以叫做类的成员 member,他们都需要定义访问级别。访问级别的用处在于控制成员在那些地方可以被访问,这样达到面向对象中“封装”的目的。
访问修饰符: private public protected internal
Private 私有成员,在类的内部才可以访问,
Protected 保护成员,在该类内部和继承类中可以访问
Public 公共成员,完全公开,没有访问权限
Internal当前程序集内可以访问。
//定义一个person类
public class Person
{
//字段
private string _name;
//访问修饰符是私有的,这个字段就是私有的,外面的不可以访问,可以通过属性在外面或者其他地方进行访问
//属性
public string Name
{
get { return _name; }//读
set { _name = value; }//写
}
//字段
private char _gender;
//属性
public char Gender
{
get { return _gender; }
set { _gender = value; }
}
//字段
private int _age;
//属性
public int Age
{
get { return _age; }
set { _age = value; }
}
public void SayHello()
{
Console.WriteLine("hello,大家好,我是人");
}
public void walk()
{
Console.WriteLine("我走路");
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
属性的定义:get和set,读和写
属性是为了保护与之对应的字段的,保证对字段的读取和赋值符合要求。
属性可以分为读写、只读、只写。
允许外部访问的变量一定要声明为属性。
在属性中判断值
//在写的时候判断值
//person类中判断
public int Age
{
get { return _age; }
set
{
if (value >= 0 && value <= 150)
{
_age = value;
}
else
{
_age = 18;
}
}
}
public void SayHello()
{
Console.WriteLine("hello,大家好,我是人,年龄是{0}",_age);
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
//在读值的时候进行判断
get
{
if(_age>=0 && _age<=150)
{
return _age;
}
else
{
return 18;
}
}
public void SayHello()
{
Console.WriteLine("hello,大家好,我是人,年龄是{0}",Age);
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
构造函数
//类中定义构造函数
public Person2(string name, char gender, int age)//后面可以给参数也可以不给参数
{
this._name = name;//指示代词
this._gender = gender;
this._age = age;
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
//主函数那边调用构造函数
Person2 per = new Person2("张三",'男',18);//利用构造函数给里面的字段赋值
per.Show();
Console.ReadKey();
- 1
- 2
- 3
- 4
析构函数
不能在结构中定义析构函数,只能对类使用析构函数。
一个类只能有一个析构函数
无法继承或重载析构函数
无法调用析构函数,他们是被自动调用的
析构函数既没有修饰符也没有参数
程序被执行完才可以调用。没什么用处。
~Person2()
{
Console.WriteLine("哈哈,我被调用了");
}
- 1
- 2
- 3
- 4
命名空间
用于解决类重名问题,可以看做是类的文件夹
如果代码和被使用的类在一个namespace则不需要using(引入)
在不同的命名空间下的类有两种调用方法
写全称 命名空间.类名
先using引用命名空间,再调用(先添加引用,然后再导入命名空间)
两种命名方法:
感谢阅读,欢迎斧正~
文章来源: blog.csdn.net,作者:张艳伟_Laura,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/Laura__zhang/article/details/110393449
- 点赞
- 收藏
- 关注作者
评论(0)