• 软件:1158
  • 资讯:38204|
  • 收录网站:95629|

IT精英团

面向对象——继承与构造函数

面向对象——继承与构造函数

浏览次数:
评论次数:
编辑: wx60962e30e0986
信息来源: 51CTO博客
更新日期: 2021-05-08 16:17:33
摘要

面向对象——继承与构造函数,wx60962e30e0986的博客原创的.Net文章。

  • 资讯详情

继承的概念:让派生类(子类)拥有基类(父类)所有的功能。

实现:通过在派生类后加 “:”冒号,实现继承。好处:增加了代码的重用性。

如果一个类没有显示定义其父类,那么他的父类是System.Object,只能有一个基类。

创建派生类对象的时候,默认的情况的下,在派生类通过调用基类的默认构造(访问修饰符是public,并且没有任何的形参)函数来创建基类对象的。如果基类没有默认的构造,则需要在派生类中显示调用基类的构造函数。

方式:派生类构造函数():base(实参)

{}

构造函数:类构造函数,对象构造函数,派生类调用基类的构造函数。构造函数的作用:初始化字段,给字段赋值。

静态构造函数:静态构造函数不能有访问修饰符,必须是静态的。

静态构造函数不能有任何参数。静态构造函数有且仅有一个构造函数。静态构造函数只执行一次,调入内存后就不再执行。

例:

   Public class Person

              {

         Static Person(){}

}

Static的作用:在内存中创建类的实体。

注:没有指定基类,则基类默认为object

防止继承—密封类,关键字(sealed),该类就不能作为其他类的基类。  

例:给饭卡充钱:

    public class Peson

    {

        private ushort height;//字段

        public ushort Height

        {

            get

            {

                Console.WriteLine("调用Get方法");

                return height;

            }

            set

            {

                Console.WriteLine("调用Set方法");

                height = value;

            }

        }

        private string name;

        private byte age;

    }

    public class Card

    {

        private string owner;

        public string Owner

        {

            get { return owner; }

            set { owner = value; }

        }

        private decimal balance;

        public decimal Balance

        {

            get { return balance; }

            set { balance = value; }

        }

    }

    public class Teacher : Peson

    {

        public void FullMoney(Card card, decimal money)

        {

            card.Balance += money;

        }

    }

    public class Student : Peson

    {

        private Card myCard;

        public Card MyCard

        {

            get { return myCard; }

            set { myCard = value; }

        }

    }

    class Program

    {

        static void Main(string[] args)

        {

            Student s = new Student();

            s.Height = 15;

            Console.WriteLine(s.Height);

            Card card = new Card();

            s.MyCard = card;

            Teacher t = new Teacher();

            t.FullMoney(card, 100);

            Console.WriteLine(s.MyCard.Balance);

        }

    }

输出结果:

      调用Set方法

      调用Get方法

      15

      100

 

 派生类调用基类的方法:1、如果派生类中没有基类的方法,可以直接调用该方法。

 2、派生类中有该方法应该用base.方法名调用

例:public class CustomerAccount

    {

        public virtual decimal CalculatePrice()

        {

            return 0.0m;

        }

    }

    class GoldAccount : CustomerAccount

    {

        public override decimal CalculatePrice()

        {

            return base.CalculatePrice()*0.9m;

        }

}

构造函数举例:

 1、public class Student

    {

        public Student()

        {

            Console.WriteLine("调用构造函数");

        }

    }

    class Program

    {

        static void Main(string[] args)

        {

            Student st = new Student();

        }

    }

输出结果:调用构造函数

例2、在继承中,创建对象的执行过程。

  public class Person

    {

        public Person()

        {

            Console.WriteLine("Peson");

        }

        public Person(string name)

        {

            Console.WriteLine("Name:"+name);

        }

    }

    public class Student:Person

    {

        public Student()

            : base()//当为无参时,可有可无,系统会自动添加

        {

            Console.WriteLine("调用构造函数");

        }

        public Student(string name)

            : base()//当基类有多个构造函数时,base用来指定调用的构造函数

        {

            Console.WriteLine("调用构造函数:姓名:"+name);

        }

        public Student(string name, int age)

            : base(name)//调用 Person(string name)构造函数

        {

            Console.WriteLine("调用构造函数:姓名:" + name+" 年龄:"+age);

        }

    }

    class Program

    {

        static void Main(string[] args)

        {

          Student st = new Student();

          Student st1 = new Student("xiaowang");

          Student st2 = new Student("xiaowang",12);

        }

    }

输出结果:

  Peson

  调用构造函数

Peson

调用构造函数:姓名:xiaowang

调用构造函数:姓名:xiaowang 年龄:12

 

Linq To DataSet总结
« 上一篇
返回列表
下一篇 »
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表
你会是第一个来这里评论的人吗?
最近发布资讯
更多