首页 > 编程语言 >面向对象编程 多态

面向对象编程 多态

时间:2022-11-03 20:56:26浏览次数:36  
标签:Run Animal void 多态 public 面向对象编程 Console class

多态

静态多态性,重载

重载:同一个方法中有多个相同名称的方法,但参数不一样。

在编译阶段(程序未运行的时候),函数之间就产生了一对一的关系。
减少函数的命名,多个相同的函数可以使用相同的命名。

Mathf f = new Mathf();
f.Add(10001);

class Mathf {
    public void Add(float a) {
        
    }

    public void Add(float a, float b) {
        
    }
}

动态多态性 重写

重写:父类使用 virtual 形成虚方法,子类使用override冲洗对父类的方法进行重写。

Animal a = new BigGoose();
a.Run();// 调用的是BigGoose下的Run函数


Animal b = new TheGiantPanda();
b.Run();// 调用的是Animail下的Run函数
((TheGiantPanda)b).Run();// 调用的是TheGianPanda下的Run函数。

// 父类动物
class Animal {
    public virtual void Run() {
        Console.WriteLine("父类的逻辑");
    }
}

class BigGoose :Animal {
    // 没有对Run进行重写,使用服了的Run逻辑。
}

class People : Animal {
    public override void Run() {
        Console.WriteLine("");// 对父类的Run进行重写,使用自己的逻辑。
    }
}

class ChineseAlligator:Animal {
    public override void Run() {
        base.Run();
        Console.WriteLine("自己的逻辑");// 同时使用父类和自己的逻辑。
    }
}

class TheGiantPanda:Animal {
    public new void Run() {
        Console.WriteLine("重定义");// 通过New关键字使Run方法实现重定义,当类型为父类调用父类的Run函数,当类型为子类的时候调用的是子类的Run函数。可以在调用前先将类型进行转换。
    }
}

抽象类

抽象类不能进行 New (不能进行实现)。
Window w = new Window();因为是抽象类故不被允许。
Window w1 = new Login();可以进行创建,因为创建的具体实例是Login。

abstract class Window {
    // 抽象方法只能存在抽象类中
    public abstract void Open();
    public abstract void Close();
    // 一般方法也可以存在抽象类中
    public void Refresh() {
        Console.WriteLine("刷新");
    }
}

class Login : Window {
    // 继承抽象类必须要实现对应的抽象方法
    public override void Close() {
        Console.WriteLine("登录界面打开");
    }

    public override void Open() {
        Console.WriteLine("登录界面关闭");    
    }
}

抽象类主要用于程序框架,通常是主程序考虑抽象概念。

标签:Run,Animal,void,多态,public,面向对象编程,Console,class
From: https://www.cnblogs.com/wuzhongke/p/16855559.html

相关文章

  • 面向对象编程二
    动静态方法1.什么是动态和静态动态就是绑定给对象的方法直接在类体代码中编写即可,对象调用会自动将对象当做第一个参数传入,类调用则有几个形参就传几个实参;静态方法就是......
  • 面向对象编程(二)
    面向对象编程(二)一、动静态方法什么是动静态?动态就是绑定给对象的方法直接在类体代码中编写即可,对象调用会自动将对象当做第一个参数传入,类调用有几个形参就传几个实参;......
  • Demo56_关于多态_较复杂
    输出类的代码如下packagecom.oop.DuoTai_5;publicclassApplication{publicstaticvoidmain(String[]args){//方法的输出与右侧关系不大,左侧......
  • 面向对象编程
    内容概要面对对象核心思路编程思想面向对象之类与对象类与对象的创建对象独有的数据(属性)对象独有的功能(方法)面对对象核心思路我们如果没有对象的存在,我们有一些......
  • 面向对象编程
    面向对象编程一、面向对象之人狗大战'''推导思路:1.代码定义出人和狗2.将产生人和狗的字典封装成函数3.定义人打狗的动作,和狗咬人的动作(生命值=攻击力-生命值)4.解......
  • java多态性(转载)
    原文链接https://www.cnblogs.com/jack204/archive/2012/10/29/2745150.htmlJava中多态性的实现什么是多态面向对象的三大特性:封装、继承、多态。从一定角度来看,封装和......
  • java多态的案例
    classAnimal{intage=100;//如果父类中没有call方法,那么子类中也不能调用该方法,编译时会出错publicvoidcall(){System.out.println("动物再......
  • C++:45---多态
    一、多态介绍面向对象的核心思想是多态性,其含义是“多种形式”概念:在子类覆盖了父类函数的情况下,用父类的指针(或引用)调用子类对象,或者通过父类指针调用覆盖函数的时候(动......
  • java多态
    测试一:成员变量:编译时期向左看,运行时也向左看测试二:成员方法:编译时期向左看,运行时期向右看什么是多态呢?多态可以理解为是同一个方法由于发送对象的不同而执行不同的行为......
  • Java-什么是多态,多态的具体体现有那些?
    多态:方法或者对象有多种形态,是OOP的第三大特征,是建立在封装和继承之上的多态的具体体现:方法多态重载体现多态重写体现多态对象多态对象的编译类型和运行类型可......