c#面向对象---什么是继承?

  大家可能看过那部狗血的《继承者们》,ok,在程序中的继承吧,有那点‘继承’的意思,却又不尽相同。举个小栗子来说:你爷爷的money,早晚是你爸爸的,你爸爸的,又早晚是你的。这就是继承。而程序中的继承又是怎么回事呢? 

   要想知道继承是怎么回事,首先搞清楚为什么要有继承这个东西,即目的何在。举个例子可能更好理解。比如你在写一个类<人类>,属性有 姓名、性别、年龄。而你又需要写另一个类<学生类>,学生自然也有姓名,性别和年龄,但又有他特有的属性(如,年级),你这时要把共有的属性再写一遍吗?当然看起来也没多少代码,可是当你写10个类呢,是不是就有代码冗余的赶脚了?

  So,(attention to) 继承来了。

  继承,就是可以让你少写代码的东西,懒人推动进步嘛(粗俗的理解哈哈)。上述学生类是人类的一个子类(派生类),人类是父类(基类)。子类继承父类的属性和方法(不继承私有字段),在子类中可以使用这些成员。(so easy)当创建子类对象时,在子类中会创建父类的对象,默认的调用父类的无参构造函数(方便初始化的东西)。

  使用方法:子类后加 :(父类名)

  还有一个问题,如果父类中写了有参的构造方法,原先默认的无参构造方法就会被干掉,这样子类中创建父类对象时会报错。怎么办么?

  1) 重新自己写一个无参构造函数(low)

  2) 使用 base 关键字,在子类中显示地调用父类的构造函数

  注意,object 类是所有类的基类。

  如果 ,子类的方法和父类方法名相同怎么办?会警告。这时你钓不到父类的方法了。如果你是故意为之,要在子类方法使用 new关键字。如:public new void test()

  ok?

时间: 2024-08-02 22:14:23

c#面向对象---什么是继承?的相关文章

JavaScript面向对象之类的继承

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-

Lua面向对象----类、继承、多继承、单例的实现

(本文转载)学习之用,侵权立删! 原文地址   http://blog.csdn.net/y_23k_bug/article/details/19965877?utm_source=tuicool&utm_medium=referral lua面向对象实现: 一个类就像是一个创建对象的模具.有些面向对象语言提供了类的概念,在这些语言中每个对象都是某个特定类的实例.lua则没有类的概念,每个对象只能自定义行为和形态.不过,要在lua中模拟类也并不困难. lua中,面向对象是用元表这个机制来实现.

C++ Primer 学习笔记_31_面向对象编程(2)--继承(二):继承与构造函数、派生类到基类的转换 、基类到派生类的转换

C++ Primer 学习笔记_31_面向对象编程(2)--继承(二):继承与构造函数.派生类到基类的转换 .基类到派生类的转换 一.不能自动继承的成员函数 构造函数 拷贝构造函数 析构函数 =运算符 二.继承与构造函数 基类的构造函数不被继承,派生类中需要声明自己的构造函数. 声明构造函数时,只需要对本类中新增成员进行初始化,对继承来的基类成员的初始化调用基类构造函数完成(如果没有给出则默认调用默认构造函数). 派生类的构造函数需要给基类的构造函数传递参数 #include <iostream

C++ Primer学习笔记32_面向对象编程(3)--继承(三):多重继承、虚继承与虚基类

C++ Primer学习笔记32_面向对象编程(3)--继承(三):多重继承.虚继承与虚基类 一.多重继承 在C++语言中,一个派生类可以从一个基类派生,称为单继承:也可以从多个基类派生,称为多继承. 多重继承--一个派生类可以有多个基类 class <派生类名> : <继承方式1> <基类名1>,<继承方式2> <基类名2>,... { <派生类新定义成员> }; 可见,多继承与单继承的区别从定义格式上看,主要是多继承的基类多于一个

JavaScript中OOP——&gt;&gt;&gt;面向对象中的继承/闭包

  前  言  OOP  JavaScript中OOP-->>>面向对象中的继承/闭包 1.1面向对象的概念 使用一个子类继承另一个父类,子类可以自动拥有父类的属性和方法.      >>> 继承的两方,发生在两个类之间. 1.2JS模拟实现继承的三种方式:        首先,了解一下call/apply/binb:通过函数名调用方法,强行将函数中的this指向某个对象:            call写法:  func.call(func的this指向的obj,参数

03 面向对象之:继承

一:什么是面向对象的继承? 比较官方的说法就是: 继承(英语:inheritance)是面向对象软件技术当中的一个概念.如果一个类别A“继承自”另一个类别B,就把这个A称为“B的子类别”,而把B称为“A的父类别”也可以称“B是A的超类”.继承可以使得子类别具有父类别的各种属性和方法,而不需要再次编写相同的代码.在令子类别继承父类别的同时,可以重新定义某些属性,并重写某些方法,即覆盖父类别的原有属性和方法,使其获得与父类别不同的功能.另外,为子类别追加新的属性和方法也是常见的做法. 一般静态的面向

18.Python面向对象之:继承

一:什么面向对象的继承? 比较官方的说法就是: 继承(英语:inheritance)是面向对象软件技术当中的一个概念. 如果一个类别A“继承自”另一个类别B,就把这个A称为“B的子类别”, 而把B称为“A的父类别”也可以称“B是A的超类”.继承可以使得子类别 具有父类别的各种属性和方法,而不需要再次编写相同的代码.在令子 类别继承父类别的同时,可以重新定义某些属性,并重写某些方法,即覆 盖父类别的原有属性和方法,使其获得与父类别不同的功能.另外,为子类 别追加新的属性和方法也是常见的做法. 一般

JavaScript 随笔2 面向对象 原型链 继承

第六章 面向对象的程序设计 1.创建对象的几种方式 A)工厂模式 function CreatObj(name,sex,age){ this.name=name; this.sex=sex; this.age=age; } 缺点:虽然可以批量创建对象,却不能知道对象的类型 只知道他是Object类型: B)构造函数 function Person(name,sex){ this.name=name; this.sex=sex; this.sayName=function(){ alert(thi

ExtJS的面向对象编程(继承、重写)

<link rel="stylesheet" type="text/css" href="<%=basePath %>/ext-3.4/resources/css/ext-all.css"> <script type="text/javascript" src="<%=basePath%>/ext-3.4/adapter/ext/ext-base.js">&l

面向对象基础(继承类,抽象方法,接口,委托和事件)

1.页面上实现猫叫,狗叫,虎叫 <asp:Button ID="cat" runat="server" Text="猫叫" onclick="cat_Click" /><br/> <asp:Button ID="dog" runat="server" Text="狗叫" onclick="dog_Click" />