惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

WordPress大学
WordPress大学
V
Visual Studio Blog
P
Privacy International News Feed
月光博客
月光博客
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
L
Lohrmann on Cybersecurity
N
News and Events Feed by Topic
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
Apple Machine Learning Research
Apple Machine Learning Research
阮一峰的网络日志
阮一峰的网络日志
Webroot Blog
Webroot Blog
T
Threatpost
宝玉的分享
宝玉的分享
The Last Watchdog
The Last Watchdog
小众软件
小众软件
L
LINUX DO - 最新话题
C
Cisco Blogs
T
Troy Hunt's Blog
Schneier on Security
Schneier on Security
酷 壳 – CoolShell
酷 壳 – CoolShell
www.infosecurity-magazine.com
www.infosecurity-magazine.com
雷峰网
雷峰网
G
GRAHAM CLULEY
有赞技术团队
有赞技术团队
Know Your Adversary
Know Your Adversary
博客园 - 叶小钗
罗磊的独立博客
V
V2EX
博客园 - Franky
P
Proofpoint News Feed
SecWiki News
SecWiki News
腾讯CDC
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Jina AI
Jina AI
博客园 - 三生石上(FineUI控件)
S
Secure Thoughts
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Google DeepMind News
Google DeepMind News
Attack and Defense Labs
Attack and Defense Labs
人人都是产品经理
人人都是产品经理
The Cloudflare Blog
PCI Perspectives
PCI Perspectives
V2EX - 技术
V2EX - 技术
Google DeepMind News
Google DeepMind News
Last Week in AI
Last Week in AI
aimingoo的专栏
aimingoo的专栏
Cisco Talos Blog
Cisco Talos Blog
N
News and Events Feed by Topic
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
S
SegmentFault 最新的问题

博客园 - 寒山潜龙

『性能』List 和 HashSet 查找性能比较 (任何数据量的检索 从此只用 HashSet ) 人脸识别算法总结 神解释:UART、I2C、SPI、1-wire四大通信接口 解决github不显示图片的问题 树莓派SD卡容量扩展的方法 树莓派安装opencv调用cv2时提示 ModuleNotFoundError: NO module named 'cv2’的解决方法 在数莓派32位系统中安装opencv 4.5.5 树莓派官方32位和64位系统换源 linux系统压缩备份 Linux 解决 hosts 文件无法修改: ‘readonly‘ option is set (add ! to override) Paddle Lite——报错解决:基于Paddle Lite Demo运行run.sh编译报错无法运行 Debian系统安装opencv github 打不开一招搞定! - 寒山潜龙 树莓派4B安装 百度飞桨paddlelite 做视频检测 (一、环境安装) C#之虚函数 非常清晰全面的讲解 SQL2005四个排名函数(row_number、rank、dense_rank和ntile)的比较 Redis 集群方案 Android SDK Manager国内更新代理 AndroidDevTools简介 The status code returned from the server was: 500
今天有个朋友问我抽象方法和接口的区别,为了解释清楚这个事情,我在网上看到一篇文章讲的非常好给大家分享一下,也感谢原作者的付出
寒山潜龙 · 2020-04-30 · via 博客园 - 寒山潜龙

获取原地址:

版权声明:本文为CSDN博主「私人专属cry」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_42469910/article/details/82712482

用抽象方法和接口实现:

1 创建一个人的类包含属性:姓名,年龄,性别,住址  对属性进行封装,自我介绍,吃的方法
2 创建一个男人的类继承于人的类,创建一个独有的特性:体重,对自我介绍的方法进行重写(输出:我是?,我来自于?,我的性别是?)
3 创建一个女人的类继承于人的类,创建一个独有的特性:身高,对自我介绍的方法进行重写(输出:我是?,我来自于?)
4 定义一个测试类,对男人的信息和女人的信息进行输出(里氏替换原则)

这是一个抽象的方法,先定义属性,进行封装(sg 身高 和tz 体重  是因为在方法里面要用到,所以加上)

然后将自我介绍和吃的方法写上:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
     
    namespace _009
    {
       public abstract class person
        {
            //姓名,年龄,性别,住址
            private string pname;
            private int page;
            private char psex;
            private string paddress;
            private string sg;
            private string tz;
     
            public string Pname
            {
                get
                {
                    return pname;
                }
     
                set
                {
                    pname = value;
                }
            }
     
            public int Page
            {
                get
                {
                    return page;
                }
     
                set
                {
                    page = value;
                }
            }
     
            public char Psex
            {
                get
                {
                    return psex;
                }
     
                set
                {
                    psex = value;
                }
            }
     
            public string Paddress
            {
                get
                {
                    return paddress;
                }
     
                set
                {
                    paddress = value;
                }
            }
            public abstract void showper();//自我介绍
            public abstract void eatper();//吃
        }
    }
————————————————

写一个接口

写上吃和男人自我介绍,女人自我介绍的方法:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
     
    namespace _009
    {
         interface IPerson
        {
            void eat();//吃
            void show(string name, int age, char sex, string address,string tz);//男人的自我介绍
            void show(string name,string address,string sg);//女人的自我介绍
        }
    }
————————————————
 建一个男人和女人的类,继承并同时实现上面抽象方法和接口,将方法重载或实现:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
     
    namespace _009
    {
        class Man : person,IPerson
        {
             string tz;
     
            public string Tz
            {
                get
                {
                    return tz;
                }
     
                set
                {
                    tz = value;
                }
            }
            
            public void eat()
            {
                Console.WriteLine("我不和你玩了,我要回家吃饭");
                Console.ReadKey();
            }
     
            public void show(string name, string address, string sg)
            {
            }
     
            public void show(string name, int age, char sex, string address)
            {
     
            }
     
            public void show(string name, int age, char sex, string address, string tz)
            {
                Console.WriteLine("大家好,我叫{0}性别{1}年龄{2}来自{3}体重{4}", name, age, sex, address, tz);
                Console.ReadKey();
            }
     
            public override void eatper()
            {
                Console.WriteLine("我中午还没吃饭呢");
                Console.ReadKey();
            }
            
            public override void showper()
            {
                Console.WriteLine("大家好,我叫{0}性别{1}来自{2}体重{3}",base.Pname,base.Psex,base.Paddress,this.Tz);
                Console.ReadKey();
            }
        }
    }
————————————————
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace _009
{
    class Wuman : person, IPerson
    {
        private string sg;
 
        public string Sg
        {
            get
            {
                return sg;
            }
 
            set
            {
                sg = value;
            }
        }
 
        public void eat()
        {
            Console.WriteLine("我不和你玩了,我要回家吃饭");
            Console.ReadKey();
        }
 
        public void show(string name, string address, string sg)
        {
            Console.WriteLine("我叫{0}来自{1}身高{2}",name,address,sg);
            Console.ReadKey();
        }
 
        public void show(string name, int age, char sex, string address)
        {
            Console.WriteLine("大家好,我叫{0}性别{1}年龄{2}来自{3}", name, age, sex, address);
            Console.ReadKey();
        }
 
        public void show(string name, int age, char sex, string address, string tz)
        {
        }
 
        public override void eatper()
        {
            Console.WriteLine("哼,我中午不吃饭了");
            Console.ReadKey();
        }
 
        public override void showper()
        {
            Console.WriteLine("大家好,我叫{0}来自{1}身高{2}", base.Pname,base.Paddress,this.Sg);
            Console.ReadKey();
        }
    }
}
————————————————
 写一个测试类进行测试:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
     
    namespace _009
    {
        class Program
        {
            static void Main(string[] args)
            {
                IPerson ip = new Wuman();
                IPerson iip = new Man();
                iip.eat();
                iip.show("小张", 18, '男', "厕所", "120");
                ip.eat();
                ip.show("小芳","丽春院","165");
     
                Console.WriteLine("............................");
                Man pe = new Man();
                pe.Pname = "小王";
                pe.Psex = '男';
                pe.Paddress = "火星";
                pe.Tz = "120";
                pe.eatper();
                pe.showper();
     
                Wuman pa = new Wuman();
                pa.Pname = "球球";
                pa.Paddress = "长沙";
                pa.Sg = "165";
                pa.eatper();
                pa.showper();
     
            }
        }
    }
————————————————
版权声明:本文为CSDN博主「私人专属cry」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_42469910/article/details/82712482