抽象类,摘要方法

<1>

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 抽象基类,让狮子、猴子和鸽子从其派生出来

    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("我吃大米");
        }
    }



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

时间: 2024-10-27 09:13:34

抽象类,摘要方法的相关文章

C#抽象类及其方法的学习

在C#中使用关键字 abstract 来定义抽象类和抽象方法. 不能初始化的类被叫做抽象类,它们只提供部分实现,但是另一个类可以继承它并且能创建它们的实例. "一个包含一个或多个纯虚函数的类叫抽象类,抽象类不能被实例化,进一步一个抽象类只能通过接口和作为其它类的基类使用."- C++ Programming Language by Stroustrup Chapter13.2 抽象类能够被用于类,方法,属性,索引器和事件,使用abstract 在一个类声明中表示该类倾向要作为其它类的基

C#基础系列 - 抽象类及其方法的学习

在C#中使用关键字 abstract 来定义抽象类和抽象方法. 不能初始化的类被叫做抽象类,它们只提供部分实现,但是另一个类可以继承它并且能创建它们的实例. "一个包含一个或多个纯虚函数的类叫抽象类,抽象类不能被实例化,进一步一个抽象类只能通过接口和作为其它类的基类使用."- C++ Programming Language by Stroustrup Chapter13.2 抽象类能够被用于类,方法,属性,索引器和事件,使用abstract 在一个类声明中表示该类倾向要作为其它类的基

Wordpress主题Twenty Fifteen首页和分类显示摘要方法[图]

我们知道,在搜索结果中文章是以摘要的形式显示的,而首页和分类都是显示全部内容,因此我找到了以下方法,只要把index.php和archive.php把红色位置的content改为content-search即可.

接口 抽象类 虚方法 三者比较-1

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

抽象类和方法

在我们所有乐器(Instrument)例子中,基础类Instrument 内的方法都肯定是“伪”方法.若去调用这些方法,就会出现错误.那是由于Instrument 的意图是为从它衍生出去的所有类都创建一个通用接口.之所以要建立这个通用接口,唯一的原因就是它能为不同的子类型作出不同的表示.它为我们建立了一种基本形式,使我们能定义在所有衍生类里“通用”的一些东西.为阐述这个观念,另一个方法是把Instrument称为“抽象基础类”(简称“抽象类”).若想通过该通用接口处理一系列类,就需要创建一个抽象

C#抽象类及其方法的学习(转)

在C#中使用关键字 abstract 来定义抽象类和抽象方法. 不能初始化的类被叫做抽象类,它们只提供部分实现,但是另一个类可以继承它并且能创建它们的实例. "一个包含一个或多个纯虚函数的类叫抽象类,抽象类不能被实例化,进一步一个抽象类只能通过接口和作为其它类的基类使用."- C++ Programming Language by Stroustrup Chapter13.2 抽象类能够被用于类,方法,属性,索引器和事件,使用abstract 在一个类声明中表示该类倾向要作为其它类的基

Android-Java-普通类与抽象类(覆盖)&amp;方法重载

覆盖都是子类与父类之间 & 接口与实现类之间 才会产生:覆盖 有很多名称,覆盖,复写,重写 都是一个意思: 注意:重载都是方法之间  方法同名 不同参数,就属于重载: 普通类-覆盖: 描述Animal动物对象: package android.java.oop18; public class Animal { public void cry() { System.out.println("cry"); } } 描述Dog狗对象: package android.java.oop

Java通过接口或者抽象类调用方法的时候,怎么知道调用的是哪个实现类里的方法?

用对象的 getClass() 方法获得它的类,之后就可以随意去判断这是哪个实现类了. 比如代码1-1所示的JDBC连接池的代码,我们想要知道conn调用的close方法是释放连接还是归还连接, 我们可以打印conn.getClass():: Connection conn = JDBCUtils.getConnection(); System.out.println(conn.getClass()); 结果为class com.alibaba.druid.pool.DruidPooledCon

scala 13 抽象类 字段方法

DT大数据梦工厂scala的所有视频.PPT和代码在百度云盘的链接:http://pan.baidu.com/share/home?uk=4013289088#category/type=0&qq-pf-to=pcqq.group <Scala深入浅出实战初级入门经典视频课程>http://edu.51cto.com/lesson/id-66538.html <Scala深入浅出实战中级进阶经典视频课程>http://edu.51cto.com/lesson/id-6713