zoukankan      html  css  js  c++  java
  • 面向对象 接口

    接口:
    在团队开发中,一个类,需要多个模块组合起来才是完整的类;
    多个人开发不同的模块,最后要把它们拼接起来,靠的就是接口;

    一个类,需要继承多个类才是完整的,但是程序规定,一个类只能继承一个父类;
    为了解决这个问题,就出现了接口,一个类可以继承无数个接口;

    人 这个类,需要会吃饭,技能,运动,才是一个完整的人;
    吃饭这个功能是A单独开发的,作为人的最基本的父类,使用的是抽象类;
    技能和运动,是B和C分别开发的,需要人这个类来继承,但是已经有父类了;
    那么B和C就使用的接口,来让人这个类可以继承他们写的两个功能模块;

    接口里面的方法很像抽象方法;

    接口也是起到一个规范和约束的作用;

    例:

    创建一个项目,需要使用到三个类里面的方法,要有一个子类继承这三个类,最后调用这个子类,而一个子类只能继承

    一个父类,所以将其他两个写为接口,一个类可以继承无数个接口

    先在创建的项目里添加一个父类(抽象类,在子类中重写使用):

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace 接口
    {
        abstract class huozhe //添加一个抽象类,里面只有使用方法没有函数体,作为之后继承使用
        {
            public abstract void chifan();//注意,添加抽象类关键字abstract,需要在class类前面写
        }                                 //还需要在写使用方法时写在访问修饰符后面声明抽象类
    }

    接口1:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace 接口
    {
        public interface work //这个类需要被子类继承使用,但子类已经继承了一个父类,可以继承无数接口,
                       //所以将这个类写为接口,接口关键字interface,前面可以写上public,可以被访问
        {
            void jishu();//接口里面添加方法时没有访问修饰符和函数体,直接写返回类型 使用方法,
        }                //需要被继承后重写来实现它
    }

    接口2:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace 接口
    {
        public interface sport//同样,为了同时被子类继承,这个也需要写成接口
        {
            void xiangmu();//里面类似于抽象类一样,这个只有返回类型和使用方法,没有函数体
        }                   //需要被继承后重写实现
    }

    子类:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace 接口
    {
        class ren:huozhe,work,sport//添加一个子类,需要同时继承huozhe,work,sport三个类才能完整,
            //但是一个子类只允许有一个父类,可以有无数个接口,所以将另外两个类写为接口,继承时用逗号隔开
        {
            //这个子类继承了一个抽象类和两个接口,抽象类和接口没有方法主体,需要在这个子类中重写实现
            public override void chifan() //注意重写关键字override
            {
                Console.WriteLine("用嘴吃饭");
            }
            public  void jishu() //接口被继承后重写<不需要写override>关键字
            {
                Console.WriteLine("会计算机");
            }
            public  void xiangmu() 
            {
                Console.WriteLine("会踢足球");
            }
        }
    }

    Program:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace 接口
    {
        class Program
        {
            static void Main(string[] args)
            {
                //子类ren,同时继承了活着这个抽象类和work,sport两个接口,
                //实例化一下ren就可以使用到所有类的方法
                ren sc = new ren();
                sc.chifan();
                sc.jishu();
                sc.xiangmu();//可以使用到子类所继承的类和接口的所有使用方法
    
    
                Console.ReadLine();
            }
        }
    }

  • 相关阅读:
    JAVA RMI调用实战学习
    linux下关于压缩、解压相关的操作
    关于hessian接口类方法顺序及对象序列化的实战研究
    Java对象引用传递探索
    mysql 语句or效率问题
    树莓派做下载服务器 aria2 篇
    免费 cdn
    搞定迅雷固件在TP-LINK WR720N,127.0.0.1 9000 获取不到激活码
    Mware vCenter Server 识别固态硬盘为(非SSD)是什么原因?
    XXX esx.problem.syslog.nonpersistent.formatOnHost not found XXX
  • 原文地址:https://www.cnblogs.com/zyg316/p/5599060.html
Copyright © 2011-2022 走看看