封装和继承

10 篇文章 1 订阅
4 篇文章 0 订阅

欢迎来到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/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值