抽象类接口

Posted 疯丫头0805

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了抽象类接口相关的知识,希望对你有一定的参考价值。

一、抽象类:abstract
它就是为了被继承而出现的
普通的类中所有的方法都变成虚方法,没有人用最基础的方法,全部都需要重写,那么就不需要那么费劲把普通类中的方法主体都写完,而是,直接定义成抽象类,并且都写成抽象方法。
只声明方法的名称和返回类型,具体方法主体是什么,继承过去以后自己去实现。
抽象方法一定是在抽象类中
有抽象方法的类,一定是抽象类
抽象类中不一定只有抽象方法
二、接口:interface“干爹”
就是让类更加完善
都是抽象方法,不能有一点实在东西,全部内容都需要在子类中进行实现

program   类

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

namespace 抽象类_接口
{
    class Program
    {
        static void Main(string[] args)
        {
            //Ren r = new Ren();//划红线,抽象类是无法创建出来的,无法实例化

            NanRen n = new NanRen();
            Console.WriteLine(n.ChiFan());


            Console.WriteLine(n.ShuoHua());//在抽象类中也可以下普通方法,抽象类不能实例化,所以要通过子类运用

            Console.ReadLine();
        }
    }
}

ren   类

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

namespace 抽象类_接口
{
    public abstract class Ren//abstract抽象的意思
    {
        //抽象类
        public abstract string ChiFan();

        public abstract string ShuiJiao();

        public string ShuoHua()//在抽象类中也可以下普通方法,抽象类不能实例化,所以要通过子类运用
        {
            return "我能说话!";
        }


        //接口,让类更加完善

    }
}

nanren   类

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

namespace 抽象类_接口
{
    public class NanRen:Ren,gongzuo,yule   //要实现接口中的所有内容,要在主体部分全部打出来,要不然程序不能运行
    {
        public override string ChiFan()
        {
            return "大口吃饭!";
        }

        public override string ShuiJiao()
        {
            return "趴着睡觉!";
        }

        public string youxi()
        {
            return "1V5";
        }

        public string paobu()
        {
            return "12.88";
        }

        public string jineng()
        {
            return "打代码!";
        }

        public string didian()
        {
            return "汉企";
        }

    }
}

nvren   类

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

namespace 抽象类_接口
{
    public class NvRen:Ren 
    {
        public override string ChiFan()
        {
            return "小口吃饭!";
        }

        public override string ShuiJiao()
        {
            return "躺着睡觉!";
        }

    }
}

gongzuo   类

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

namespace 抽象类_接口
{
    public interface gongzuo//interface是接口的定义关键字
    {
        string jineng();
        
        string didian();

        //public string shijian()//接口就是用来被继承的,里面不能有public普通方法,程序也不会运行
        //{
        //    return "10年";
        //}

    }
}

yule   类

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

namespace 抽象类_接口
{
    public interface yule
    {
        string youxi();

        string paobu();
        
    }
}

 

以上是关于抽象类接口的主要内容,如果未能解决你的问题,请参考以下文章

Kotlin接口和抽象类 ( 接口属性和方法定义 | 接口默认方法实现 | 抽象类 )

设计模式学习笔记 接口vs抽象类的区别?是否要为每个类定义接口?

接口和抽象类的相同与区别

接口和抽象类的相同与区别

抽象类和接口的异同

代码学习PHP面向对象之抽象类与接口