前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >抽象类,摘要方法

抽象类,摘要方法

作者头像
全栈程序员站长
发布2022-07-06 14:40:37
3380
发布2022-07-06 14:40:37
举报
文章被收录于专栏:全栈程序员必看

大家好,又见面了,我是全栈君。

<1>

代码语言:javascript
复制
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Test
{
    //抽象类不能是密封的或静态的。  抽象类的成员仅仅能被子类的对象来调用。注:抽象成员须要子类override重写后使用。非抽象成员由子类直接调用    //不能初始化的类被叫做抽象类。抽象类仅仅能被继承。不能被实例化。抽象类中能够包括非抽象方法,属性。字段等成员。    abstract class A //A是一个抽象类    {        public abstract string Name { get; set; } //抽象类能够包括抽象属性        public int Age { get; set; } //抽象类能够包括非抽象的属性        public abstract void Method(); //抽象类能够包括抽象方法。抽象方法仅仅需声明。无需实现。        public void Sum(int a, int b) //抽象类能够包括非抽象的方法。        {            Console.WriteLine(a + b);            Console.WriteLine("我的名字叫{0},今年{1}岁", Name, Age);        }        public A()  //抽象类还能够有构造函数。由于抽象类不能实例化,所以它就无法调用这个构造函数。这个构造函数仅仅有在它所在的类的“派生类初始化”的时候才干够被运行到。        {            this.Age = 5;            this.Name = "张三";        }    }    class B : A    {        public override void Method()  //重写“抽象父类”的抽象方法。注意:实现的时候须要加overridekeyword        {            Console.WriteLine("实现父类的抽象方法");        }        public override string Name //重写“抽象父类”的抽象属性        {            get;            set;        }        public B()        {        }    }    class C : B    {    }    /*    class C    {        //含有抽象方法的类一定是抽象类,而这里的C类并非抽象类。所以以下定义的抽象方法报错        public abstract string Myabstarct(); //错误 “Test.C.Myabstarct()”是抽象的,但它包括在非抽象类“Test.C”中	            }         */    class InheritanceTest1    {        static void Main(string[] args)        {            //A a = new A(); //错误 ,抽象类不能被实例化。            A a = new B(); //正确,实例化一个B类型的对象赋值给父类A的一个变量a            a.Method(); //输出“实现父类的抽象方法”即:这里调用是子类的Method方法。            B b = new B();            b.Name = "燕子李三";            b.Sum(5, 6); //抽象类的非抽象方法仅仅能被子类的对象来调用。由于B类重写了A类的抽象Name属性。所以这里输出 “11 我的名字燕子李三。今年5岁”            C c = new C();  //由于C类继承B类。而B类又继承A类,所以C类的对象能够调用A类的公有成员            c.Sum(10, 6);  // 调用父类的父类的Sum方法。所以这里输出“16 我的名字张三,今年5岁,”            Console.ReadKey();        }    }}

狮子、猴子和鸽子都是一种动物。因此,能够建立一个Animal 抽象基类,让狮子、猴子和鸽子从其派生出来

代码语言:javascript
复制
    abstract class Animal //抽象的动物类
    {
        public abstract void eat();
    }

    class Lion : Animal    //狮子
    {
        public override void eat()
        {
            Console.WriteLine("我吃肉");
        }
    }

    class Monkey : Animal   //猴子
    {
        public override void eat()
        {
            Console.WriteLine("我吃香蕉");
        }
    }

    class Pigeon : Animal   //鸽子
    {
        public override void eat()
        {
            Console.WriteLine("我吃大米");
        }
    }

版权声明:本文博主原创文章。博客,未经同意不得转载。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/116961.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年1月1,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档