问题描述

模拟一个服务类,Server类实现了服务器的创建逻辑,子类只要在生成实例对象时传递一个端口号即可创建一个监听该端口的服务,该代码意图如下:

(1)通过SimpleServer的构造函数接收端口参数。

(2)子类的构造函数默认调用父类的构造函数。

(3)父类的构造函数调用子类的getPort方法获得端口号。

(4)父类构造函数建立端口监听机制(以Console.WriteLine替代)。

(5)对象创建完毕,服务监听启动,正常运行。

运行该程序,多运行几次,查看输出结果,写出你认为的code 1 – 5的执行顺序,并解释原因。

源代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace DEMO2
{/*** 以下代码模拟一个服务类,Server类实现了服务器的创建逻辑,子类只要在生成实例对象时传递一个端口号即可创建一个监听该端口的服务,该代码意图如下:*(1)通过SimpleServer的构造函数接收端口参数。*(2)子类的构造函数默认调用父类的构造函数。*(3)父类的构造函数调用子类的getPort方法获得端口号。*(4)父类构造函数建立端口监听机制(以Console.WriteLine替代)。*(5)对象创建完毕,服务监听启动,正常运行。* 运行该程序,多运行几次,查看输出结果,写出你认为的code 1 – 5的执行顺序,并解释原因。*/abstract class Server{protected const int DEFAULT_PORT = 40000;//code1public Server(){Console.WriteLine("2");int port = getPort();//code2Console.WriteLine("Port: " + port);}protected abstract int getPort();}class SimpleServer : Server{private int port = 100;//code3public SimpleServer(int _port){Console.WriteLine("4");port = _port;//code4}protected override int getPort(){Console.WriteLine("5");return (new Random()).NextDouble() > 0.5 ? port : DEFAULT_PORT;//code5}}class Program{public int i = 0;static void Main(string[] args){Server s = new SimpleServer(1000);/*** code3 => code1 => code2 => code5 => code4* 1)继承类静态成员变量初始化 * 2)继承类实例变量初始化 * 3)基类静态静态成员变量初始化 * 4)基类实例变量初始化 * 5)基类构造方法调用 * 6)继承类构造方法调用*/}}
}

参考文章

https://www.iteye.com/blog/fhuan123-829394

C#——继承[模拟Server类]初始化过程顺序DMEO相关推荐

  1. 高频面试题3 类初始化过程与实例初始化

    类初始化过程 1,一个类要创建实例,需要先加载并初始化该类.main方法所在的类需要先加载和初始化 2,一个子类要初始化需要先初始化父类 3,一个类初始化就是执行<clinit>()方法& ...

  2. php中继承过来的类初始化顺序,java_图文详解Java中class的初始化顺序,class的装载 在讲class的初始化 - phpStudy...

    图文详解Java中class的初始化顺序 class的装载 在讲class的初始化之前,我们来讲解下class的装载顺序. 以下摘自<Thinking in Java 4> 由于Java ...

  3. C++虚继承(七) --- 虚继承对基类构造函数调用顺序的影响

    继承作为面向对象编程的一种基本特征,其使用频率非常高.而继承包含了虚拟继承和普通继承,在可见性上分为public.protected.private.可见性继承比较简单,而虚拟继承对学习c++的难度较 ...

  4. 不可逆的类初始化过程

    类的加载过程说复杂很复杂,说简单也简单,说复杂是因为细节很多,比如说今天要说的这个,可能很多人都不了解:说简单,大致都知道类加载有这么几个阶段,loaded->linked->initia ...

  5. 百无聊赖时对java类初始化先后顺序的测试

    public   class  Test ... {     //属性     private String str = "123";              //域初始化    ...

  6. 解析 Java 类和对象的初始化过程 由一个单态模式引出的问题谈起

    在 IBM Bluemix 云平台上开发并部署您的下一个应用. 开始您的试用 问题引入 近日我在调试一个枚举类型的解析器程序,该解析器是将数据库内一万多条枚举代码装载到缓存中,为了实现快速定位枚举代码 ...

  7. Java类初始化顺序(变量赋值与静态代码块的执行时间)

    前言:最近写代码的时候经常见到见到static代码块,不由对static的执行时间产生了兴趣,进而对类初始化顺序产生了兴趣. 类从编译到执行的过程: 在使用ClassLoader将字节码转换为JVM中 ...

  8. 解析 Java 类和对象的初始化过程

    跳转到主要内容 中国 [ 选择 ] dW 全部内容--------------  AIX and UNIX  Info Mgmt  Lotus  Rational  WebSphere-------- ...

  9. 一文详解Java类初始化顺序

    目录 一.普通类 二.包含继承关系 三.包含接口.抽象类关系 本文将介绍三种情形下的类初始化顺序. 一.普通类 Java类:Animal.java package ztt.继承接口多态.执行顺序测试; ...

最新文章

  1. linux安装phpredis扩展
  2. 我们这旮都是黑社会[转]
  3. Pytorch(四) --基于Pytorch实现线性回归
  4. face alignment by 3000 fps系列学习总结(三)
  5. C++ STL容器之map 简单使用
  6. 数控机床需要c语言程序吗,数控机床编程与操作--详细介绍
  7. 修改本机域名服务器为Google Public DNS或者OpenDNS
  8. JAVA基础自学笔记整理(一)某些数据类型的姿势
  9. springboot上传文件过大,全局异常捕获,客户端没有返回值
  10. 2个维度5大方法,让你的微服务在K8s上跑起来
  11. Android RecyclerView批量更新notifyItemRangeChanged
  12. 宁愿月薪1万招新人,却不愿给月薪5千的老员工涨薪
  13. 6.企业应用架构模式 --- 会话状态
  14. 百度信息流 绑定服务器,百度信息流账户怎么搭建?百度信息流账户搭建教程...
  15. 打开jsp文件出现error错误,不能查看文件内容的解决方法,亲测有效
  16. 使用微信开发者平台调样式
  17. 纯电小型领军者 奇瑞无界Pro
  18. 换地方上网后Kali Linux 网络设置
  19. Code for city 黑客松大赛——万元大奖等你来拿
  20. 华文行楷字帖欣赏_任政行书唐诗字帖欣赏:工整秀丽、雄健挺拔!初学书法的好字帖...

热门文章

  1. 读取xml文件基于xpath
  2. java actionsupport_struts2中的Action接口和Actionsupport接口各有什么作用
  3. 日期相减计算年_函数 | Excel有个“秘密”函数,计算年龄工龄特方便
  4. 网页代码抓取工具_MAC网页颜色代码提取工具
  5. SpringMVC_4.请求数据
  6. php 正则 菜鸟,PHP正则表达式基础入门
  7. mysql profile 不记录_mysql profile使用(转)
  8. 最大流最小割经典例题_C/C++知识点之最大流最小割C++实现
  9. 非递减数列JAVA_C语言实现两个递减数列中寻找某一个数
  10. 微信小程序获取用户手机号--官方示例