---------------------- <ahref="http://www.itheima.com"target="blank">ASP.Net+Unity开发</a>、<ahref="http://www.itheima.com"target="blank">.Net培训</a>、期待与您交流! ----------------------
现实生活中的类是人们对客观对象不断认识而产生的抽象的概念,而对象则是现实生活中的一个个实体。类 (class) 是对象的“模板”或者“蓝图”,同时定义了对象的特性和操作,通过该模板可以创建很多具有类型特性的“对象”。类本质上是一种数据类型,这种数据类型将数据与对数据的操作做为一个统一的整体来定义,类的这种特点叫封装性。
类的成员有两种:存储数据的成员和操作数据的成员。存储数据的成员叫“字段”,操作数据的成员有很多,主要有“属性”、“方法”、“构造函数”等。具体代码实现如下:
class Cuboid // 类名为Cuboid
{ // 声明字段
private double length;
private double width;
private double high;
// 声明属性
public double Length { get { return length; } set { length = value; } }
public double Width { get { return width; } set { width = value; } }
public double High { get { return high; } set { high = value; } }
//声明方法
public double Volume()//求体积
{
return length*width*high;
}
//声明构造函数
public Cuboid(double l,double w,double h)
{
length=l;
width=w;
high=h;
}
}
在类中有一种特殊的成员叫做静态数据成员,静态数据成员不属于任何一个特定的对象,而是属于类,或者说属于全体对象,是被全
体对象共享的数据。
class Cuboid
{private static int cuboidNumber ;
//静态字段,用于统计长方体对象
private double length;
private double width;
private double high;
//静态方法,只能调用静态成员
public static int GetCuboidNumber( )
{return cuboidNumber;}
}
类的继承性是指在进行类的定义时,不需要编写代码就可以包含另一个类的数据成员、属性成员、方法成员等。但也可以定义自己类
中特有的成员。在类的继承中,被继承的类叫做基类或者父类,继承的类叫做派生类或者子类。类的继承具有单根性和传递性。以上
面提到的长方体类(Cuboid)为基类,写一个派生类——正方体类(Cube),代码为:
public class Cube : Cuboid
{
public double CubeCubage()
{
// 注意这里使用的是基类定义中的公有成员
return Length * Length * Length;
}
}
如果前面的Cuboid类中增加有参的构造函数:
public Cuboid(double l, double w, double h)
{ length = l; width = w; high = h; }
则其派生类Cube则也必须声明构造函数:
public Cube(double l) : base(l, 0, 0) { }
访问修饰符:
public:访问控制修饰符,访问控制修饰符可以是public、protected、private、internal。通常都使用public以保证类的开放性,类定义
的访问控制默认为是internal。
public interface IRun
类的多态:一个对象表现出多种类型。实现多态的3中方法:1.虚方法;2.抽象方法;3.接口。
1.虚方法:(子类重写父类中定义的方法。父类方法:virtual,子类方法:override)
class Duck
{
public virtual void Bark()
{
Console.WriteLine("嘎嘎");
}
}
class MoodDuck:Duck
{
public override void Bark()
{
Console.WriteLine("咯咯");
}
}
class PlasticDuck:Duck
{
public override void Bark()
{
Console.WriteLine("唧唧");
}
}
{
public virtual void Bark()
{
Console.WriteLine("嘎嘎");
}
}
class MoodDuck:Duck
{
public override void Bark()
{
Console.WriteLine("咯咯");
}
}
class PlasticDuck:Duck
{
public override void Bark()
{
Console.WriteLine("唧唧");
}
}
2.抽象类:
public abstract class Graph//抽象类与抽象方法需要用关键字abstract
{
public abstract double Area();
public abstract double Girth();
}
public class Circle : Graph
{
public double Radius
{
get;
set;
}
public Circle(double radius)
{
this.Radius = radius;
}
public override double Area()
{
return Math.PI * this.Radius * this.Radius;
}
public override double Girth()
{
return 2 * Math.PI * Radius;
}
}
public class Reactangle : Graph
{
public double Chang
{
get;
set;
}
public double Kuan
{
get;
set;
}
public Reactangle(double c, double k)
{
this.Chang = c;
this.Kuan = k;
}
public override double Area()
{
return this.Chang * this.Kuan;
}
public override double Girth()
{
return 2*(this.Chang+this.Kuan);
}
}
3.接口:(接口代表一种规范或者能力)
{
public abstract double Area();
public abstract double Girth();
}
public class Circle : Graph
{
public double Radius
{
get;
set;
}
public Circle(double radius)
{
this.Radius = radius;
}
public override double Area()
{
return Math.PI * this.Radius * this.Radius;
}
public override double Girth()
{
return 2 * Math.PI * Radius;
}
}
public class Reactangle : Graph
{
public double Chang
{
get;
set;
}
public double Kuan
{
get;
set;
}
public Reactangle(double c, double k)
{
this.Chang = c;
this.Kuan = k;
}
public override double Area()
{
return this.Chang * this.Kuan;
}
public override double Girth()
{
return 2*(this.Chang+this.Kuan);
}
}
{
void Run();
}
public interface IFlyable
{
void Fly();
}
public interface ISwimming
{
void Swim();
}
public interface ISuperMan:IRun,IFlyable,ISwimming
{
}
{
public void Run()
{
Console.WriteLine("学生会跑步");
}
public void Fly()
{
Console.WriteLine("学生会飞");
}
public void Swim()
{
Console.WriteLine("学生会游泳");
}
}
---------------------- <ahref="http://www.itheima.com"target="blank">ASP.Net+Unity开发</a>、<ahref="http://www.itheima.com"target="blank">.Net培训</a>、期待与您交流! ----------------------