• 抽象类与接口的区别


    抽象类和接口的区别如下:
          1、在类来继承抽象类时,只需实现部分具体方法和全部抽象方法,而实现接口则要实现里面的全部方法。

    2、在接口中无成员变量,而抽象类中可有成员变量。

    3、引进接口主要是为了解决多继承的问题。

    4、接口中不能有非抽象方法,但抽象类中可以有。

    5、一个类能实现多个接口,但只能有一个父类。

    6、接口并不属于继承结构,它实际与继承无关,因此无关的类也可以实现同一个接口。

    关于抽象类的私有方法:

          抽象类不能被实例化。
          抽象类可以有私有的构造函数,私有的构造函数使得子类不能继承该抽象类,因为子类在继承了父类后,
          在实例化化的时候要首先调用父类的构造函数,但此处该构造函数被声明为私有的,不能访问,所以子类无法被构造出来。
          所以,拥有私有的构造函数的抽象类不能被继承。

          拥有私有的构造函数的抽象类的静态方法可被直接调用。
          具体类中的私有构造函数,这种情况最常见的是在单例模式中。

    抽象类的测试代码:(说明和具体类一样,子类在构造前先调用父类的构造方法)

    代码
    1 using System;
    2  using System.Collections.Generic;
    3 using System.Text;
    4 namespace ConsoleApplication2
    5 {
    6 class Program
    7 {
    8 static void Main(string[] args)
    9 {
    10 SubUtilityClass subUtilityClass = new SubUtilityClass();
    11 subUtilityClass.diplay();
    12 Console.Read();
    13 }
    14 }
    15
    16 abstract class SupperUtilityClass
    17 {
    18 public SupperUtilityClass()
    19 {
    20 Console.WriteLine("SupperUtility's constructed function invoked");
    21 }
    22
    23 public virtual void diplay()
    24 {
    25 Console.WriteLine(" SupperUtility's display method invoked");
    26 }
    27 }
    28
    29 class SubUtilityClass : SupperUtilityClass
    30 {
    31 public SubUtilityClass()
    32 {
    33 Console.WriteLine("SubUtility's constructed function method invoked");
    34 }
    35
    36 public override void diplay()
    37 {
    38 Console.WriteLine("SubUtility's display method invoked");
    39 }
    40 }
    41 }
    42

  • 相关阅读:
    mysql 查询当月天数
    mybatis <collection>标签 类型为string时无法获取重复数据错误
    eclipse 关闭validating
    YAGNI 声明
    tomcat 异常
    svn 用cmd命令行启动服务
    linux 命令
    windows10安装liux系统
    一带一路是个啥?
    串口通信协议
  • 原文地址:https://www.cnblogs.com/gjung/p/1628294.html
Copyright © 2020-2023  润新知