zoukankan      html  css  js  c++  java
  • 抽象类与接口的区别

    抽象类和接口的区别如下:
          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

  • 相关阅读:
    ubuntu安装mysql并使用Navicat连接
    二叉树基础知识点
    Javascript 16进制转有符号的10进制整数
    Node.js 学习笔记(二)
    API测试如何演变为应用程序开发的常规部分
    API在线文档
    API文档自动生成的方法
    快速对比API版本
    如何使用OPENAPI进行质量检查
    【分享】什么是API网关?大公司为什么都有API网关?
  • 原文地址:https://www.cnblogs.com/gjung/p/1628294.html
Copyright © 2011-2022 走看看