多态—虚方法、抽象类、接口

修饰符:
public : 公共的,引用命名空间即可随意访问,访问权限最高;
private : 私有的,只有在声明它的类和结构中才可以访问,访问权限最低;

Internal : 内部的,同一个程序集中所有的类都可以访问,程序集就是命名空间,
访问权限次最高,这个访问修饰符是默认的;
Protected : 受保护的,只能在他自己和自己的子类中才能访问。

--------------------------------------------------------------------------
多态:

有了继承,才有了多态;

多态就是多种形态/状态,比如说,男人和女人,都继承了人,所有的人都有吃饭这个
方法,男人和女人吃饭的方法不一样,继承下来的方法不适合两个子类来用,那么需
要更改方法主体;

多态第一种形态:虚方法,重写 virtual

父类中方法增加:virtual 关键字,使方法变成虚方法,可以被子级重写;
格式:class 类名(此处是父级)
{
public virtual void 方法名()
{
方法主体;
例如:Console.WriteLine();
}
}

子类中重写从父级继承过来的方法:override 关键字,修改方法的主体;
格式:
格式:class 子类名:父类名
{
public override void 方法名() --此处方法名是从父类中继承到的
{
方法主体;
例如:Console.WriteLine();
}
}

第二种形态:抽象类 abstract
为什么出来的?因为父类中写了方法的主体,所有子类也会去重写,然后做父类的这个人
就觉得麻烦,既然你们都要重写,那么我就不再给你们写方法的主体了,只规定方法的返
回值,参数,方法名是什么就行了,你们自己继承了重写去;

格式:
父类:abstract class 类名
{
public abstract void 方法名();
}

子类:class 子类名:父类名
{
public override void 方法名() --此处方法名是从父类中继承到的
{
方法主体;
例如:Console.WriteLine();
}
}

1、抽象类不能被实例化
2、抽象方法一定存在抽象类中,抽象类中不一定只有抽象方法,还可以有普通方
法,抽象类无法实例化对象,那么想用抽象类中的普通方法,通过子类来用。
3、抽象类就是用来被继承的。

第三种形态:接口
人 人这个类派生出了两个类,男人,女人,只有吃饭和睡觉两个方法;
工作 另一个组开发了男人和女人需要的工作模块,技能,工作地点
娱乐 又一个组开发了男人和女人需要的娱乐模块,爱好,运动

interface 定义关键字

格式:
public interface GongZuo
{
void 方法名();
void 方法名();
}

如何使用接口继承:
class NanRen : Ren, GongZuo, YuLe
{

}

一个类只能继承一个父类,但是可以继承无数个接口
接口和抽象类都是为了继承而生的,不可以实例化创建对象
实现接口的方法:
格式:public void 方法名() -----从接口继承来的方法
{
方法主体;
}

时间: 2024-10-18 11:50:04

多态—虚方法、抽象类、接口的相关文章

虚函数/纯虚函数/抽象类/接口/虚基类

1.多态 在面向对象语言中,接口的多种不同实现方式即为多态.多态是指,用父类的指针指向子类的实例(对象),然后通过父类的指针调用实际子类的成员函数. 在Java中,没有指针,就直接用父类实例化子类对象 多态性就是允许将子类类型的指针赋值给父类类型的指针,多态是通过虚函数实现的,多态可以让父类的指针有“多种形态”,这是一种泛型技术. 所谓泛型技术,就是试图使用不变的代码来实现可变的算法 2.虚函数 在基类的类定义中,定义虚函数的一般形式: Virtual 函数返回值类型 虚函数名(形参表){ 函数

抽象类、虚方法、接口的区别

接口 1.接口只提供方法规约,不提供方法体: 2.接口中的方法不能用关键字修饰: 3.接口里不能有接口和变量: 4.接口里的方法在子类中必须全部实现: 5.接口可以实现多重继承: 抽象类 1.抽象类可以从接口继承: 2.抽象类中的实体方法在子类中不可以重写,只可以被引用: 3.抽象类中的抽象方法不可以有方法体,抽象类中的抽象方法在子类中必须重写: 4.抽象类中的虚方法在子类中可以选择性的重写: 虚方法 1.可以在子类选择性的重写: 2.不重写也可被子类调用: 接口与抽象类的异同 1.抽象类的抽象

C#中的抽象方法,虚方法,接口之间的对比

1.首先来看一看抽象类 抽象类是特殊的类,不能够被实例化:具有类的其他特性:抽象方法只能声明于抽象类中,且不包含任何实现 (就是不能有方法体),派生类也就是子类必须对其进行重写.另外,抽象类可以派生自一个抽象类,可以覆盖基类的抽象方法也可以不覆盖,如果不覆盖,则其派生类必须覆盖它们.关键字就是 abstract /* * 抽象方法必须写在,抽象类中 * */ public abstract class Animal { public abstract void Sleep(); public a

Chapter 8. 面向对象(多态--虚方法)

namespace 多态 { public class Person { private string _name; public string Name { get { return _name; } set { _name = value; } } public Person(string name) { this.Name = name; } //虚方法 public virtual void SayHello() { Console.WriteLine("我是人类"); } }

C++ 虚函数&纯虚函数&抽象类&接口&虚基类(转)

http://www.cnblogs.com/fly1988happy/archive/2012/09/25/2701237.html 1. 多态 在面向对象语言中,接口的多种不同实现方式即为多态.多态是指,用父类的指针指向子类的实例(对象),然后通过父类的指针调用实际子类的成员函数. 多态性就是允许将子类类型的指针赋值给父类类型的指针,多态是通过虚函数实现的. 多态可以让父类的指针有“多种形态”,这是一种泛型技术.(所谓泛型技术,就是试图使用不变的代码来实现可变的算法). 2. 虚函数 2.1

c# 多态实现_虚方法

实现方法: 虚方法, 抽象类, 接口 1.虚方法 将父类的方法标记为虚方法,使用关键字virtual,这个方法可以被子类重新写一遍. 在父类的方法前面加上一个virtual,在子类的方法前面加上一个override:如果子类的方法前面不加override,编译器不会报错,但这样的话,就无法通过父类来调用子类的方法,因为这个方法成了子类的独有的方法,只是名字与父类相同而已,与父类无关. 注意:如果需要对父类的方法进行重写的话,一定要在子类的方法面前加上overrie进行修饰. 什么时候使用:几个类

多态,虚方法重写,抽象类,接口

简而言之就是龙生九子,各有不同 有了继承,才有了多态 1.虚方法 virtual重写 override 父类中的方法,在子类中并不适用,那么子类需要自主更改继承的方法或者是属性,那父类中加了virtual关键字的方法才可以被子类重写 子类重写父类的方法使用的是override关键字 using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace 多态 { public

面向对象--多态、虚方法重写、抽象类、接口

多态: 一个父类有多个子类,每个子类都不尽相同 有了继承,才有了多态 虚方法:关键字 virtual 重写  override 父类中的方法在子类中并不适用,那么子类需要自主更改继承的方法或是属性, 父类中加了virtual关键字的方法才可以被子类重写,子类重写父类的方法使用的是override关键字 fly.cs中: namespace 多态 { public class fly { public virtual string fling() { return "拍翅膀飞"; } }

C#面向对象的基本概念 (Basic C# OOP Concept) 第三部分(多态,抽象类,虚方法,密封类,静态类,接口)

9.多态 Ploy的意思就是多于一种形式.在文章开始,方法那一章节就已经接触到了多态.多个方法名称相同,而参数不同,这就是多态的一种. 方法重载和方法覆盖就是用在了多态.多态有2中类型,一种是编译时多态,一种是运行时多态. 方法重载: 方法重载就是,多个方法拥有相同的方法名称,而参数个数或类型不同. 下面就是一个多态的例子,可以看到方法名称“BedRoom”被用到了2个方法中,就是2个方法有共同的方法名称"BedRoom",但是2个方法的参数是不同的. 1 class HouseOwn