1.属性的概述
属性是一种用于访问对象或类的特性的成员。
举例,属性就是特征,如,button ,字体颜色,背景颜色,字体大小,等等
如,date类,该类中有一个属性day
//* 属性不能作为ref参数或out 参数传递 //
public class Date
{
private int Day=7;
public int day // 星期属性
{
get{ return Day;}
set
{
if((value>0)&&(value<8))
{
Day=value;
}
}
}
}
2. 属性的使用
对象名.属性名
button1.text="123";
PS: 在其他类中调用,定义属性设置public
using System;
namespace runoob
{
class Student
{
private string code = "N.A";
private string name = "not known";
private int age = 0;
// 声明类型为 string 的 Code 属性
public string Code
{
get
{
return code;
}
set
{
code = value;
}
}
// 声明类型为 string 的 Name 属性
public string Name
{
get
{
return name;
}
set
{
name = value;
}
}
// 声明类型为 int 的 Age 属性
public int Age
{
get
{
return age;
}
set
{
age = value;
}
}
public override string ToString()
{
return "Code = " + Code +", Name = " + Name + ", Age = " + Age;
}
}
class ExampleDemo
{
public static void Main()
{
// 创建一个新的 Student 对象
Student s = new Student(); // 实例化student为S
// 设置 student 的 code、name 和 age
s.Code = "001"; // 为ID 赋值
s.Name = "Zara"; //为名称赋值
s.Age = 9;
Console.WriteLine("Student Info: {0}", s);
// 增加年龄
s.Age += 1; //重新为年龄赋值
Console.WriteLine("Student Info: {0}", s);
Console.ReadKey();
}
}
}
PS: get 访问器为了方便灵活调用
在一个类中有很多属性,如学生,属性男女,姓名,年龄,学习成绩,身高
3.抽象属性
抽象属性对类共有属性的抽象共有的属性,如 正方形和长方形他们都具有的属性是面积,周长等属性。但是他们又有一些不同的属性和方法,比如长方形有长和宽。正方形只有一个边长。他们各自的面积和周长 的计算方法也不一样。
using System;
namespace ab_cl
{
abstract class shape //定义一个抽象类( 要使用关键字abstract,不同于普通类的定义)
{
double area; //定义一个成员(面积)
}
class a:shape//定义一个长方形的类
{
private double length;//长方形的私有属性长
private double width;//长方形的私有属性宽
public a(double len, double wid)//定义一个带参的构造函数。主要用于长,宽的赋值
{
length = len;
width = wid;
}
public double area() //用于计算长方形的面积的方法
{
return length * width;
}
public double zhouchang() //用于计算长方形的周长的方法
{
return (length + width) * 2;
}
}
class b : shape//定义一个正方形的类
{
private double width;//定义正方形的私有属性边长
public b(double wid)//定义一个带参的构造函数。主要用于边长的赋值
{
width = wid;
}
public double area()//计算正方形的面积
{
return width*width;
}
public double zhouchang()//用于计算正方形的周长
{
return width * 4;
}
}
class c
{
static void Main()//入口函数
{
a t = new a(2.5, 1.2);//将长方形这个类实例化为对象
b t1 = new b(2.5); //将正方形这个类实例化为对象
Console.WriteLine("C#中抽象类的应用:");
Console.WriteLine("长方形的面积是:{0}", t.area());
Console.WriteLine("长方形的周长是:{0}", t.zhouchang());
Console.WriteLine("正方形的面积是:{0}",t1.area());
Console.WriteLine("正方形的周长是:{0}", t1.zhouchang());
Console.ReadKey();
}
}
}
在C#中,抽象属性是指在一个抽象类中声明的属性,该属性没有具体的实现代码,只是声明了一个属性名称和数据类型。抽象属性可以被继承类覆盖(override),也可以被继承类重写(override)。
抽象属性通常在抽象类中使用,用于定义需要在继承类中实现的具体属性。继承类必须提供具体的实现代码,以便在需要时可以访问该属性。
例如,假设有一个抽象类Animal,其中声明了一个抽象属性Sound:
public abstract class Animal
{
public abstract string Sound { get; set; }
}
该抽象属性Sound没有具体的实现代码,只是一个声明。现在,任何继承Animal类的类都必须提供Sound属性的具体实现。
如,Dog类可以继承Animal类并实现Sound属性:
public class Dog : Animal
{
public override string Sound
{
get { return "Woof"; }
set { }
}
}
在这个例子中,Dog类覆盖了Animal类的Sound属性,并提供了读取和写入访问的实现。
现在,我们可以创建一个Dog对象,并访问其Sound属性:
Dog myDog = new Dog();
Console.WriteLine(myDog.Sound); // 输出 "Woof"
myDog.Sound = "Bark";
Console.WriteLine(myDog.Sound); // 输出 "Bark"