C# 面向对象编程(杂2),类中可能出现的成分
1. 字段,属性,方法,自动属性
class Person1
{
//字段
private string _name;
//字段对应的属性
public string Name
{
//当你输出属性的值得时候 会执行get方法
get {
return _name; }
//当你给属性赋值的时候 首先会执行set方法
set {
_name = value; }
}
// 方法
public void Chlss()
{
// this关键字,在类中可以不用写,但推荐写
Console.WriteLine("{0}是吃货\t{1}",this.Name,this.Gender);
}
}
//自动属性
public string Name
{
get;
set;
}
//相当于
private string _name
public string Name
{
get {
return _name;};
set {
_name = value;};
}
2.权限(五种)
public
:公开的公共的,在哪都能访问。
private
:私有的,只能在当前类的内部进行访问,出了这个类就访问不到了。
protected
受保护的:可以在当前类的内部以及该类的子类中访问。
internal:只能在当前项目中访问。在同一个项目中,internal和public的权限是一样。
protected internal:protected+internal
1)、能够修饰类的访问修饰符只有两个:public、internal。
2)、可访问性不一致。
子类的访问权限不能高于父类的访问权限,会暴漏父类的成员。
3.其他类
partial部分类
namespace _06部分类
{
class Program
{
static void Main(string[] args)
{
}
}
//一个类可以分成多个地方来写
public partial class Person
{
private string _name;
public void Test()
{
}
}
public partial class Person
{
public void Test(string name)
{
// _name
}
}
}
sealed密封类
不能够被其他类继承,但是可以继承于其他类。
namespace _07密封类
{
class Program
{
static void Main(string[] args)
{
}
}
//sealed
public sealed class Person:Test
{
}
public class Test
{
}
}
4 值传递和引用传递
值类型在复制的时候,传递的是这个值得本身。
引用类型在复制的时候,传递的是对这个对象的引用。
字符串是特别的,虽然字符串可以看成char类型数组,但字符串具有不变性
string s1 = "张三";
string s2 = s1;
string s2 = "历史";
//经过这样操作,字符串s1还是"张三",因为字符串重新赋不同的值,会重新开辟空间
ref关键字传值是引用传递。
类ToString的问题
1.ToString是object的虚方法,可以重写
2下面代码
//我们将一个对象输出到控制台 默认情况下 打印的就是这个对象所在的类的命名空间
namespace _06ToString的问题
{
class Program
{
static void Main(string[] args)
{
//我们将一个对象输出到控制台 默认情况下 打印的就是这个对象所在的类的命名空间
int[] nums = {
1, 2, 3, 4, 5 };
Console.WriteLine(nums.ToString());
Person p = new Person();
Console.WriteLine(p.ToString());
Console.ReadKey();
}
}
public class Person
{
public void SayHello()
{
Console.WriteLine("我是人类");
}
}
}