欢迎来到unity学习、unity培训、unity企业培训教育专区,这里有很多U3D资源、U3D培训视频、U3D教程、U3D常见问题、U3D项目源码,我们致力于打造业内unity3d培训、学习第一品牌。
今天老师给我们讲了面向对象的三大特点,分别是封装,继承和多态。
今天写的是封装和继承。
封装
封装就是将数据和操作组合到一起,并决定哪些数据和操作对外是可见的。
封装的作用:
隐藏类的实现细节:使用方法将类的数据隐藏起来。
迫使用户去使用一个界面去访问数据:定义程序如何引用对象的数据,控制用户对类的修 改和访问数据的程度。
使代码更好维护:类的内部实现改变,对外接口可以不变。
封装的实现有两种方式:
(1)用方法来实现封装:
public class Department
{
private string departname;
// 读方法
public string GetDepartname()//首字母要大写
{
return departname;
}
//写方法
public void SetDepartname( string departname)
{
this.departname=departname;
}
}
输出:
public static int Main(string[] args)
{
Department d = new Department();
d.SetDepartname("ELECTRONICS");//在这里赋值
Console.WriteLine("TheDepartmentis :"+d.GetDepartname());
return 0;
}
(2)用属性来实现封装:
属性是C#引入的一种语言成分,只有很少的语言支持属性。通过对属性的读和写来保护类中的域。第一种方法体身也是一种好的方式,但用属性来实现封装会更方便。
public class Department
{
private string departname;
public string Departname//首字母大写
{
get
{
return departname;
}
set
{
departname=value;
}
}
public static int Main(string[] args)
{
Department d= new Department();
d.Departname="Communication";
Console.WriteLine("TheDepartmentis :{0}",d.Departname);
return 0;
}
}
相比方法类型的封装,属性来实现的封装更加简洁一些。可以用一条语句来操作内部的数据。
继承
继承提供了创建新类的一种方法,对于开发者来说就是代码共享。
通过继承创建的子类是作为另一个类的扩充或修正所定义的一个类。
子类从父类中继承所有方法和变量。
子类和父类之间是特化与范化的关系。
语法:子类声明:父类
子类的声明:
(1)子类可以使用父类的protected和public可见的变量和方法,
就像这些变量和方法是自己定义的一样。
(2)私有成员和方法其实已经被继承了,但是它们却不可以被访问,
因为私有成员和方法只能被声明它们的类中才可访问,所以看上
去像是没有被继承。
(3)C# 中,如果类声明时没有声明父类,那么缺省为Object 类的
子类。C#中的所有类都是System.Object类的子类。
(4)C#中,子类只能继承一个父类。
(5)一个基类可以有多个直接派生类。继承是可以传递的。
举例:
(先创建一个父类)
class Car{
int color;
int door;
int speed;
public void AddOil() { }
}
创建一个子类
class TrashCar : Car
{ }
class MyApp
{
static void Main()
{
TrashCar myCar = new TrashCar();
myCar.AddOil();
}
}
如果不想让其他类继承怎么办?
使用sealed修饰符,此修饰符会阻止其他类从该类继承。
例如:sealed class Ass
{
public void Sum()
{
}
}
方法隐藏
如果子类方法的方法名和基类的方法名相同时,系统将隐藏基类同名方法,自动调用子类的同名方法.
例:
(父类)
class Test
{
public void Print()
{
Console.WriteLine("我是基类的Print方法\n------------------------------");
}
}
(子类)
class Test2 : Test
{
public void Show()
{
Console.WriteLine("我是子类的Show方法-----------------------------");
}
}
class Program
{
static void Main(string[] args)
{
//实例化Test2子类
Test2 ts2 = new Test2();
ts2.Show();
Console.ReadKey();
}
输出的应为:Console.WriteLine("我是子类的Show方法-----------------------------");
更多精彩请看:http://www.gopedu.com/