• 7.C#知识点:抽象类和接口浅谈


    知识点目录==========>传送门

    首先介绍什么是抽象类?

    抽象类用关键字abstract修饰的类就是叫抽象类,抽象类天生的作用就是被继承的,所以不能实例化,只能被继承。而且 abstract 关键字不能和sealed一起使用,因为sealed是不允许继承,这样就是抽象类的意义冲突了。

        public abstract class Test
        {
    
    
        }

      现在我们知道知道了抽象类长的什么样了,下面要知道抽象类是干嘛用的。顾名思义把对象共有的东西抽象出来。比如猫和和狗鸟等都有眼睛,都有嘴巴。那我们就可以抽象出一个动物类。把眼睛和嘴巴放到这这些公共的部分抽象到动物类里里面。用来对继承于动物类的子类进行约束。下次在有一个狗。只要继承于动物类那么狗必须实现眼睛和嘴巴。

     Dog类 继承了 Animal抽象了。VS提示我们没有实现抽象类Animal类的两个方法。由此可以看出抽象类是对子类的约束。说白了。抽象类就是对子类的抽象,即将子类中的公共部分提取出来,放到一个特定的类中。抽象类是一份合约,用于为同一类型(这里类型不是指数据类型,而是逻辑上的划分,如人和猫都是动物)的子类提供约束。约束他们的公共部分。

     现在来总结下抽象类。

    1.抽象类的定义需要abstract关键字

    2.抽象类的存在的意义就是被继承的。所以不能实例化,不能与sealed关键字一起用。

    3.抽象类允许存在非抽象方法和抽象方法。

    4.抽象类的抽象成员,子类必须实现。

    在来看看接口,接口和抽象类很多概念相似。接口的创建要用到interface,接口出现的意义也是被继承。也不能与sealed关键字一起用

        public interface Animal
        {
            void Run();
            void Say();
        }

    接口的和抽象类功能一样,也是抽象公共部分。

     从逻辑上与抽象类区分的话。总结成一句话。就是接口约束子类对象的行为。抽象类是将同一类型类的公共部分提取出来,进行约束。注意这里的同一类型不是数据类型而是逻辑上的,比如人和啊猫啊狗都是动物。

    来总结下两者的区别

    1.学过C#的都知道类只能单继承,接口可以多继承。这个就是抽象类和接口的第一个区别。

    2.接口不能包含已经实现成员,但是抽象类是可以的

    3.接口的成员默认1实现是public的,但是抽象类的成员可以被访问修饰修饰但是不能是私有的。

    4.抽象类多用于约束对象的核心基础成员,接口对于用于约束子类的行为。比如类型有哪些行为(方法)。

    5.接口成员如果变动的话,实现子类全部都要变动,抽象只有抽象成员变动了子类才要变动。

    6.接口不允许定义字段,抽象允许定义字段,但是不允许定义抽象字段。

     

    最有精华的两句话

    • 抽象类和接口都是一种约束,这种约束使我们的代码有更好的层次结构,特别是在多人协同开发时(若每个人都按照自己的习惯来,对整个开发团队而言,开发成本不知要提高多少)。

    • 抽象类是对相同类型(不是数据类型)子类公共部分的抽象(约束),接口是对能力的一种约束

    参考的大牛的博客------>传送门

  • 相关阅读:
    Java过滤器与SpringMVC拦截器的差异学习笔记
    java拦截器(Interceptor)学习笔记
    java监听器(Listener)学习笔记
    java过滤器Filter笔记
    java反射学习笔记
    程序员大佬推荐的java学习路线
    jmeter java请求
    java代码实现rabbitMQ请求
    fatjar eclipse4.4 java项目的jar包一起打包 net.sf.fjep.fatjar_0.0.32.jar
    jmeter参数化之CSV Data Set Config
  • 原文地址:https://www.cnblogs.com/DingKing/p/8111155.html
Copyright © 2020-2023  润新知