C# 面向对象编程(杂2),类中可能出现的成分,字段,属性,方法,自动属性,权限(五种),其他类,值传递和引用传递,类ToString的问题

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的虚方法,可以重写

扫描二维码关注公众号,回复: 12675814 查看本文章

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("我是人类");
        }
    }
}

image-20210203123818398

猜你喜欢

转载自blog.csdn.net/qq_38463737/article/details/113617778