20150429 C#面向对象 继承与多态

继承
一、什么继承?
1.父类的相关成员,会自动派生到子类去。public protected
2.子类可以扩展父类的相关成员。
3.子类可以替代父类来使用,但父类不能替代子类来使用。
二、继承的语法:
class 子类名:父类名
{

}
三、继承的规则:
(一)成员变量的继承
1.public protected
2.如果同名就隐藏。子类与父类各自用各自的成员。
(二)属性的继承
1.属性一般只有public
2.如果同名就隐藏。子类与父类各自用各自的成员。
(三)方法的继承
1.public protected
2.如果同名就隐藏。子类与父类各自用各自的成员。
3.重写:
a.把父类的方法设为虚方法,virtual。——父类说:这个方法可以被重写。
b.在子类中,使用override来重写父类中的方法。——子类确认我重写这个方法。

注意: 1.如果父类方法中没有声明virtual,子类中有override重写它。会报错。
2.如果父类中声明了virtual,子类中没有override去重写它,不会报错,但会被隐藏。
3.虚方法一虚到底。子类即使override父类的虚方法,子类的这个方法依然还是虚方法。

(四)构造函数的继承
1.如果父类没有写构造函数,或者父类构造函数没有参数。子类的构造函数没有特殊要求。
2.如果父类的构造函数都有参数,子类构造函数必须向父类构造函数中传递值。base();

注:在子类中调用父类的方法时,可以使用base.xxxx来调用。一般用调用父类被重写的方法。

base--父类对象。
this--当前对象。

多态:不是一个新东西。在继承的基础上实现出来的。
多态的实现是:父类的引用指向子类的实例。当指向不同子类的时候,父类引用调用子类方法的时候,呈现出不同的形态。

时间: 2024-11-10 14:17:23

20150429 C#面向对象 继承与多态的相关文章

Java面向对象㈡ -- 继承与多态

Java的继承是通过extends和implement来实现的,Java不支持多继承,但是Java支持多层继承以及多实现(接口).Java继承有一个关键字super是用来指向父类.Java继承衍生出覆盖的概念.覆盖被用来支持多态.实际开发中Java通常继承于抽象类,实现于接口.如果不希望一个类被继承,或者一个方法被覆盖,或者一个成员变量被改变,就可以用final修饰.这里只说明两个问题:1,重载和覆盖的区别重载和覆盖的区别:重载发生在同一个类之中,重载要求函数名相同,参数不同(参数个数||参数类

Python之路-面向对象&继承和多态&类属性和实例属性&类方法和静态方法

一.面向对象 编程方式 面向过程:根据业务逻辑从上到下写垒代码 函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可 面向对象:对函数进行分类和封装,让开发"更快更好更强-" 什么是面向对象 面向对象就不像面向过程那样按照功能划分模块了,它所关注的是软件系统有哪些参与者,把这些参与者称为对象,找出这些软件系统的参与者也就是对象之后,分析这些对象有哪些特征.哪些行为,以及对象之间的关系,所以说面向对象的开发核心是对象 什么是类 面向对象编程的两个重要的概念:类和对象 类是

Python学习(七)面向对象 ——继承和多态

Python 类继承和多态 在OOP(Object Oriented Programming)程序设计中,当我们定义一个class的时候,可以从某个现有的class 继承,新的class称为子类(Subclass),而被继承的class称为基类.父类或超类(Base class.Super class). 我们先来定义一个class,名为Person,表示人,定义属性变量 name 及 sex (姓名和性别):定义一个方法:当sex是male时,print he:当sex 是female时,pr

day6面向对象--继承、多态

继承     继承:就像遗传一样,继承就是拥有父类的所有方法和属性,并且能够定义自己独特的属性和方法,对上面的类进行扩展. 可以什么都不写,直接继承父类,如下: class People(object): def __init__(self,name,age): self.name = name self.age = age def eat(self): print("%s is eating......" %self.name) def sleep(self): print(&quo

python 面向对象——继承与多态

Python是面向对象的编程语言,面向对象的基本单元是类 类的声明: 1 class class_name(): 2 pass 测试如下: In [1]: class c(): ...: pass ...: In [2]: a=c() In [3]: a Out[3]: <__main__.c instance at 0x07500A30> 类的继承: 1 In [4]: class base(): 2 ...: def f(self): 3 ...: print 'base' 4 ...:

面向对象-继承和多态

在这一节中,你将体会到面向对象的诸多特色. 1.单继承 class Person(Object): def __init__(self, name, age): self.name = name self.age = age def walk(self): print("%s is walking..." % self.name) def talk(self): print("%s is talking..." % self.name) # 定义子类1 py2\3都

2、C#面向对象:封装、继承、多态、String、集合、文件(上)

面向对象封装 一.面向对象概念 面向过程:面向的是完成一件事情的过程,强调的是完成这件事情的动作. 面向对象:找个对象帮你完成这件事情. 二.面向对象封装 把方法进行封装,隐藏实现细节,外部直接调用. 打包,便于管理,为了解决大型项目的维护与管理. 三.什么是类? 将相同的属性和相同方法的对象进行封装,抽象出 “类”,用来确定对象具有的属性和方法. 类.对象关系:人是类,张三是人类的对象. 类是抽象的,对象是具体的.对象可以叫做类的实例,类是不站内存的,对象才占内存. 字段是类的状态,方法是类执

JAVA基础——面向对象三大特性:封装、继承、多态

JAVA面向对象三大特性详解 一.封装 1.概念: 将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问. 2.好处: 只能通过规定的方法访问数据.     隐藏类的实例细节,方便修改和实现. 3.封装的实现步骤 需要注意:对封装的属性不一定要通过get/set方法,其他方法也可以对封装的属性进行操作.当然最好使用get/set方法,比较标准. A.访问修饰符 从表格可以看出从上到下封装性越来越差. B.this关键字 1.this关键字代表当前

面向对象的三大特征——封装、继承、多态

接触过面向对象的人都知道面向对象有三大特征,分别是封装.继承和多态.这三者分别指的是什么,为什么是这哥仨,使用他们有什么好处,我们来梳理一下. 封装 原则:隐藏对象的属性和实现细节,仅对外提供公共访问方式. 好处: ①将变化隔离. ②便于使用. ③提高重用性. ④提高安全性. Demo1: 比如一个学生类:他具有姓名和年龄两个属性,但是为了提高安全性和重用性,便于使用,我们将其封装起来. public class Student { private String name; private in