12. 抽象与密封

一、抽象类与抽象方法

  1、抽象类与抽象方法声明

  抽象类:在面向对象的概念中,所有的类都是通过对象来描述,但并不是所有的类都用来描述对象。如果一个类中没有足够的信息来描绘一个具体的对象,这样的类就是抽象类。
  声明:他们都必须包含关键字 abstract ,并且抽象方法不能有方法体。抽象类中可以包含非抽象方法。
  2、抽象类特性:
  (1)抽象类不能实例化,必须通过继承由派生类来实现其抽象方法。如果派生类没有实现所有的抽象方法,则该派生类也必须声明为抽象类。
  (2)抽象类的非抽象子类(即派生类)必须通过重载实现其继承的所有抽象方法和抽象服务器 。

  3、抽象方法
  (1)抽象非是隐式的虚方法,只允许声明在抽象类中,不能使用static、private或virtual修饰符;
  (2)重写抽象方法时采用override 。

  4、抽象方法和虚方法的区别:
  虚方法有实现部分,并且派生类对其重写是可选的;抽象方法没有实现部分,并且强制非抽象派生类对其重写。

  5、abstract修饰符
  (1)他可以和类、方法、属性、索引器及事件一起使用;
  (2)在类声明中使用 abstract 修饰符以表明这个类只能是其他类的基类;
  (3)他不能修饰静态方法或静态属性 。

二、密封类与密封方法

  1、密封类
  (1)密封类即不能继承的类,C#中使用关键字 sealed,将类和方法声明为密封类或者密封方法;
  (2)密封类中不能包含虚方法(virtual)和抽象方法(abstract)。

  2、密封方法
  (1)用修饰符 sealed 进行标记的方法;
  (2)使用 sealed 修饰符可以防止派生类进一步重写该方法 。

三、虚方法

  (1)子类可以对父类中的虚方法进行重写;
  (2定义
如: public virtual void eat();  //使用virtual关键字定义
        public override void eat(); //使用override关键字进行重写

 

转载于:https://www.cnblogs.com/yx-xiansheng/p/7628113.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/371047.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

pstate0 vid数值意义_天体运动的简单数值计算

(建议阅读全文) 预备知识 万有引力, 弹簧振子受迫运动的简单数值计算    下面我们来用一种极其简单的算法对单个天体在中心天体的万有引力作用下的运动进行数值计算. 事实上该问题存在解析解(见开普勒三定律&#x…

集合框架

集合框架包含的内容: 集合框架的接口: List接口实现类 ArrayList 1 package com.jredu.ch01;3 import java.util.ArrayList;5 import java.util.List;7 public class ArrayListTest {9 public static void main(String[] args) { 10 // TODO…

使用CSS实现无滚动条滚动

我们都知道,撸页面的时候当我们的内容超出了我们的div,往往会出现滚动条,影响美观。 尤其是当我们在做一些导航菜单的时候。滚动条一出现就破坏了UI效果。 我们不希望出现滚动条,也不希望超出去的内容被放逐,就要保留…

Java中的类型安全的空集合

我之前曾在Java Collections类的实用程序上进行过博客撰写,并且特别地在使用Usings Collections Methods上的博客emptyList(),emptyMap()和emptySet()上进行了博客撰写。 在本文中&a…

php cpu mac,PHP 获得计算机的唯一标识[CPU,网卡 MAC地址]

//获取电脑的CPU信息function OnlyU(){$a ;$b array();if(function_exists(exec)){if(mailto:!exec( /all",$b)){return false;}}elseif(function_exists(system)){ob_start();if(mailto:!system( /all")){return false;}else{}$b ob_get_contents();ob_end_clean…

剑指offer二十二之从上往下打印二叉树

一、题目 从上往下打印出二叉树的每个节点,同层节点从左至右打印。 二、思路 二叉树的层次遍历,可以借助队列实现。具体思路详见注释。 三、代码 import java.util.ArrayList; import java.util.LinkedList; /** public class TreeNode {int val 0;Tree…

arduino i2c 如何写16位寄存器_arduino入门

硬件:Arduino Uno是基于ATmega328P(数据表)的微控制器板。它具有14个数字输入/输出引脚(其中6个可用作PWM输出),6个模拟输入,工作电压5v,输入电压7-12v。串行:0(RX)和1(TX)用于接收(RX)和发送(TX)TTL串行数据。这些引脚…

原生JS实现banner图的滚动与跳转

HTML部分&#xff1a; <div id"banner"><!--4张滚动的图片--><div id"inside"><img src"../../img/14072415363339_0.jpg"><img src"../../img/14072415383924_0.jpg" id"img2" /><img sr…

Java中的紧凑堆外结构/组合

在上一篇文章中&#xff0c;我详细介绍了代码对主内存的访问方式的含义。 从那时起&#xff0c;我对使用Java可以做什么以实现更可预测的内存布局有很多疑问。 有些模式可以使用数组支持的结构来应用&#xff0c;我将在另一篇文章中讨论。 这篇文章将探讨如何模拟Java中非常缺少…

java字符集编码是,java字符集与编码有关问题

java字符集与编码问题没想到自己的第一篇javaeye博客就是让人头痛的java字符集转码问题&#xff0c;下面是我个人的一些认识与网上收集的代码。在java中String在JVM里是unicode的&#xff0c;任何byte[]到String以及String到byte[]都涉及到字符集编码转换。基本规则是&#xff…

mysql序列号生成_一文看懂mycat的6种全局序列号实现方式

概述在实现分库分表的情况下&#xff0c;数据库自增主键已无法保证自增主键的全局唯一。为此&#xff0c;MyCat 提供了全局sequence&#xff0c;并且提供了包含本地配置和数据库配置等多种实现方式。下面对这几种实现方式做一下介绍。1、本地文件方式原理&#xff1a;此方式 My…

android.graphics.Paint方法setXfermode (Xfermode x...

[java] view plaincopymPaint new Paint(); mPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SCREEN)); 常见的Xfermode&#xff08;SRC为原图&#xff0c;DST为目标图&#xff09;&#xff0c;把代码中的SRC_IN换成下图指定的模式就会出现对应的效果图…

从零开始的全栈工程师——html篇1

全栈工程师也可以叫web 前端 H5主要是网站 app 小程序 公众号这一块 HTML篇 html(超文本标记语言&#xff0c;标记通用标记语言下的一个应用。) “超文本”就是指页面内可以包含图片、链接&#xff0c;甚至音乐、程序等非文字元素。 超文本标记语言的结构包括“头”部分&am…

二分+树的直径 [Sdoi2011]消防

问题 D: [Sdoi2011]消防 时间限制: 1 Sec 内存限制: 512 MB 提交: 12 解决: 6 [提交][状态][讨论版] 题目描述 某个国家有n个城市&#xff0c;这n个城市中任意两个都连通且有唯一一条路径&#xff0c;每条连通两个城市的道路的长度为zi(zi<1000)。 这个国家的人对火焰…

使用MRUnit测试Hadoop程序

这篇文章将略微绕开使用MapReduce实现数据密集型处理中的模式&#xff0c;以讨论同样重要的测试。 汤姆•惠勒 &#xff08; Tom Wheeler&#xff09;在纽约2012年Strata / Hadoop World会议上参加的一次演讲给了我部分启发。 处理大型数据集时&#xff0c;想到的并不是单元测试…

android之 TextWatcher的监听

以前用过android.text.TextWatcher来监听文本发生变化&#xff0c;但没有仔细去想它&#xff0c;今天兴致来了就发个疯来玩玩吧&#xff01; 有点担心自己理解错&#xff0c;所以还是先把英文API解释给大家看看 1、什么情况下使用了&#xff1f; When an object of a type is a…

php 秒杀并发怎么做,PHP实现高并发下的秒杀功能–Laravel

namespace App\Http\Controllers\SecKill;use App\Http\Controllers\Controller;use Exception;use Illuminate\Support\Facades\DB;use Illuminate\Support\Facades\Redis;class SecKillController extends Controller{/*** 往redis的隊列中添加庫存(用於測試的數據)**/public…

苹果mp3软件_优秀的Apple音乐转换器,将任何iTunes M4P,AAX,AA转换为MP3

Macsome iTunes Converter是一款优秀的音频转换工具&#xff0c;这款音频转换软件能够帮助大家快速进行音频格式转换&#xff0c;使得您可以自由的播放和分享自己喜爱的音频文件。同时这款软件与大多数音频转换软件一样&#xff0c;将受到保护DRM的Apple音乐转换转换成MP3, AAC…

Vuejs开发环境搭建及热更新

一、安装NPM 1.1最新稳定版本&#xff1a; npm install vue 二、命令行工具安装 国内速度慢&#xff0c;使用淘宝镜像&#xff1a; npm install -g cnpm --registryhttps://registry.npm.taobao.org 注意&#xff1a;以后使用npm的地方就替换成cnpm 1、全局安装vue-vli ​ …

线索二叉树的C语言实现

#include "string.h"#include "stdio.h" #include "stdlib.h" #include "io.h" #include "math.h" #include "time.h" #define OK 1#define ERROR 0#define TRUE 1#define FALSE 0 #define MAXSIZE 100 /* 存储空…