C#基础知识9—类和对象

        面向对象编程(oop)是C#的核心概念,掌握它能写出更加清晰、更易维护的代码。

一、类和对象的关系

        1)类是一群具有相同特性(属性)和行为(方法)的对象的一个统称,类不能直接使用。

        2)类时一个模型,负责创建对象

二、类和对象

2.1 创建类和对象

public class Person
{
    //字段 存储数据
    public int Age;
    public String Name;
    public char Gender;

    //方法
    public void SayHi()
    {
        Console.WriteLine("hello");
    }

}
static void Main(string[] args)
{
    //创建对象  类名 对象名字 =  new 类名()
    Person p1 = new Person();
    //如果想要拿到p1中的内容,可以通过p1.属性
    p1.Age = 100;
    p1.SayHi();
    
}

2.2 属性

        属性是面向对象编程中的一种类成员,它提供了对字段类型的安全访问机制,既能像字段一样方便使用,又能像方法一样加入逻辑控制。

属性的核心作用:

  • 保护字段
  • 隐藏实现细节
  • 语法简洁

2.2.1 属性的基本格式

private string _name; // 私有字段(外部不能直接访问)

public string Name    // 公开属性
{
    get { return _name; }          // 读取时执行
    set { _name = value; }         // 写入时执行(value 是隐式参数)
}


var person = new Person();
person.Name = "Alice";  // 调用 set 访问器
Console.WriteLine(person.Name); // 调用 get 访问器

2.2.2 属性的练习

Student类:有学生的基本信息,及其语数英字段,有打招呼和计算自己平均成绩的两个方法;

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace demo09_属性的联系
{
    internal class Student
    {
        private string name;
        private int age;
        private char gender;
        private double chinese;
        private double math;
        private double english;

        public string Name
        {
            get { return name; }
            set { name = value; }
        }
        public int Age 
        {
            get { return age; }
            set { age = value; }
        }
        public char Gender
        {
            get { return gender; }
            set {  gender = value; }
        }
        public double Chinese {
            get { return chinese; } 
            set { chinese = value; }
        }
        public double Math 
        {
            get { return math; }
            set { math = value; }
         }
        public double English 
        {
            get { return english; }
            set { english = value; }
        }


        // 方法
        public void SayHi()//介绍自己
        {
            Console.WriteLine($"我叫{Name},今年{Age}岁了,是{Gender}同学。");
        }

        public void Ava()//计算平均成绩
        { 
            double sorce = (this.Math + this.Chinese + this.English) / 3;
            Console.WriteLine($"我叫{this.Name},我的平均成绩是{sorce:F1}。");
        }
    }
}

program:创建了两个对象,并输入了字段数据,和调用了方法

namespace demo09_属性的联系
{
    internal class Program
    {
        static void Main(string[] args)
        {
            Student s1 = new Student();
            s1.Name = "小杜";
            s1.Age = 23;
            s1.Gender = '男';
            s1.English = 100;
            s1.Math = 50;
            s1.Chinese = 80;

            Student s2 = new Student();
            s2.Name = "小王";
            s2.Age = 23;
            s2.Gender = '男';
            s2.English = 90;
            s2.Math = 50;
            s2.Chinese = 100;

            s1.SayHi();
            s2.SayHi();
            s1.Ava();
            s2.Ava();

        }
    }
}

运行后的结果:

2.2.3 属性的快捷方式和自动属性

(1)快捷方式

        Ctrl + R + E 可以快速生成

private int _id;
private string _name;
private string _description;

       
public string Name { get => _name; set => _name = value; }
public string Description { get => _description; set => _description = value; }
public int Id { get => _id; set => _id = value; }//快捷生成的内容

 (2)自动属性

private string _type { get; set; }

这就是C#的自动属性,效果和前两种的属性效果是相同的。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不吃豆撅撅撅子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值