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

简而言之就是龙生九子,各有不同

有了继承,才有了多态

1、虚方法 virtual
重写 override

父类中的方法,在子类中并不适用,那么子类需要自主更改继承的方法或者是属性,那父类中加了virtual关键字的方法才可以被子类重写

子类重写父类的方法使用的是override关键字

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace 多态
{
    public    class fengji:fly
    {
        public override string Fling()
    {
         return "喷火就能飞";
    } 

    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace 多态
{
    public    class fly
    {
        /// <summary>
        /// 拍拍翅膀就能飞
        /// </summary>
        /// <returns></returns>
        public virtual string Fling()
        {
            return "拍拍翅膀就能飞!!!";
        }

    }
}

2、抽象类
是因为普通的多态虚方法没有人用本身的方法主体,那么不如只建立方法框架,继承后自己写方法

抽象类就是专门当父类的,abstract
抽象类中可以有抽象方法:abstract
抽象方法一定在抽象类中,但是抽象类中不一定只有抽象方法,也可以有普通方法

在一个类的前面加上关键字“abstract”此类就成了抽象类。

abstract class Man
    {
        public  void shuohua()
        {
            Console.WriteLine("会英语");
        }
    }

抽象类,不可以作为一个对象来使用。(无法New)一般用它来引用子类对象,

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace 抽象类
{
    public abstract class Fly
    {
        public abstract string Fling();

        public string Eat()
        {
            return "吃小米";
        }

    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace 抽象类
{
    public class Bird : Fly
    {
        public override string Fling()
        {
            return "拍拍翅膀就能飞!!";
        }

    }
}

抽象方法:

在一个方法前 加上关键字“abstract”此类就成了抽象方法。

public abstract void shuohua()

当一个类中继承的是抽象类时,必须要把方法重写。(override  关键字),

public override void shuohua()
        {
            Console.WriteLine("会英语");
        }

子类中必须全部实现抽象类父类中的所有抽象方法。

抽象方法必须在抽象类中。抽象类中可以出现其他方法,但是抽象方法必须在抽象类中。

抽象类中的普通方法,只能在当前类中 使用。

抽象类只可以作为一个父类来使用,不能创建对象。

抽象属性:

只能在 抽象类中使用。

接口:

接口关键字  interface

右键--添加--添加新建项--选择接口

3、接口
1、吃饭,睡觉 - 基础类
2、技能,地点 - 赚钱类
3、娱乐1,娱乐2 - 娱乐类

接口就是出来做 干爹的,接口不是类 interface
编写方法格式: string 方法名();
实现接口的方法 不要override,直接正常编写就可以了  接口不是类

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace 接口
{
    class Program
    {
        static void Main(string[] args)
        {

            nanren nr = new nanren();
            Console.WriteLine(nr.chifan());
        }
    }
}

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace 接口
{
    public abstract    class jichu
    {
        public abstract string chifan();

        public abstract string shuijiao();
    }
}

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace 接口
{
    interface zhuanqian
    {
         string jineng();

         string didian();

    }
}

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace 接口
{
    interface yule
    {

         string yule1();
    }
}

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace 接口
{
    class nanren : jichu ,zhuanqian,yule
    {
        public override string chifan()
        {
            return "大口吃饭";
        }
        public override string shuijiao()
        {
            return "趴着睡";
        }
        public string jineng()
        {
            return "敲代码";
        }
        public string didian()
        {

            return "白宫";
        }

        public string yule1()
        {

            return "LOL";
        }

    }
}


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

时间: 2024-12-21 02:46:39

多态,虚方法重写,抽象类,接口的相关文章

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

修饰符:public : 公共的,引用命名空间即可随意访问,访问权限最高:private : 私有的,只有在声明它的类和结构中才可以访问,访问权限最低: Internal : 内部的,同一个程序集中所有的类都可以访问,程序集就是命名空间, 访问权限次最高,这个访问修饰符是默认的:Protected : 受保护的,只能在他自己和自己的子类中才能访问. --------------------------------------------------------------------------

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

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

虚方法重写

控制台程序 class Program { static void Main(string[] args) { DerivedType derivedInstance = new DerivedType(); string line; while ((line = Console.ReadLine()) != null) { Console.WriteLine("----"); } } } public class BadlyConstructedType { protected st

类与接口(五)java多态、方法重写、隐藏

一.Java多态性 面向对象的三大特性:封装.继承.多态. 多态的类型,分为以下两种: 编译时多态: 指的是 方法重载.编译时多态是在编译时确定调用处选择那个重载方法,所以也叫 静态多态,算不上真正的多态.所以,一般说的多态都是运行时的多态. 运行时多态: 由于 方法重写,所以想要确定引用变量所调用的方法的入口,必须根据运行时的引用变量所指向的实例对象来确定.从而使得同一个引用变量调用同一个方法,但不同的实例对象表现出不同的行为.再简单点来说,就是在运行时,可以通过指向基类的指针,来调用实现子类

虚方法、抽象类

虚方法: 1.virtual方法表示此方法可以被重写, 也就是说这个方法具有多态.父类中的方法是通用方法,可以在子类中重写以重新规定方法逻辑. 2.virtual方法可以直接使用,和普通方法一样 3.不是必须重写的. 子类可以使用base.方法 的方式调用, 无论有没有在子类使用override去重写 virtual关键字只是明确标示此方法可以被重写, 其实它和一般的方法没有什么区别 相应的 sealed关键字标示此方法不可以被重写 虚方法和抽象方法的区别: 1.虚方法可以有实现体,抽象方法不能

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("我是人类"); } }

JAVA 虚函数 抽象函数 抽象类 接口

1. Java虚函数 虚函数的存在是为了多态. C++中普通成员函数加上virtual关键字就成为虚函数 Java中其实没有虚函数的概念,它的普通函数就相当于C++的虚函数,动态绑定是Java的默认行为.如果Java中不希望某个函数具有虚函数特性,可以加上final关键字变成非虚函数 PS: 其实C++和Java在虚函数的观点大同小异,异曲同工罢了. 2. Java抽象函数(纯虚函数) 抽象函数或者说是纯虚函数的存在是为了定义接口. C++中纯虚函数形式为:virtual void print(

继承、多态及方法重写、重载

1.多态: 多态指的是同一个方法的调用,由于对象不同可能会有不同的行为.现实生活中,同一个方法,具体实现完全不同. 多态的要点: (1)多态是方法的多态,不是属性的多态(多态与属性无关): (2)多态的存在要有3个必要条件:继承.方法重写.父类引用指向子类对象: (3)父类引用指向子类对象后,用该父类引用调用子类重写的方法,此时多态就出现了. /** * - - - (1)多态是方法的多态,不死属性的多态(多态与属性无关): * - - - (2)多态的存在要有3个必要条件:继承.方法重写.父类

C#z中的虚方法,抽象类

1.虚方法 我在这动物类中定义了一个虚方法 Dosth class Animal { public int Aid; public string Name; public void SetAid(int i) { Aid = i; } public void SetName(string s) { Name = s; } public virtual string Dosth() { return null; } } 然后定义了一个猫的类和狗的类  都继承于动物类 class Dog : Ani