10 多态 | 数组内容比较 | 单态模式

设计模式(策略,观察者,单例,工厂方法) C语言实现设计模式的核心方法,重点分析了策略模式和观察者模式。通过结构体和函数指针模拟面向对象特性,策略模式实现了算法族封装与动态切换,观察者模式建立了一对多的状态通知机制。两种模式均遵循开闭原则,策略模式适用于算法选择等场景,观察者模式则用于事件处理系统。文中提供了完整的C语言实现代码,展示了头文件组织、接口定义和具体模式应用,为C语言项目提供了可扩展的设计范例。 阅读详情

1,关于多态:父类或者接口类型的引用指向子类或者实现该接口的类的对象。

public class Test {

	
	public static void main(String[] args) {
		
		A a = new B();
		a.test();
	}

}



class A{
	
	public void test(){
		System.out.println("A");
	}
	
}

class B extends A{
	
	public void test(){
		System.out.println("B");
	}
	
}
接口

public class Test {
	
	public static void main(String[] args) {
		
		C c=new D();
		c.test();
	}

}

interface C{
	public void test();
}

class D implements C{

	@Override
	public void test() {
		System.out.println("D");
	}
	
}



多态是编译时的行为?还是运行时的行为?或者说多态既可以是编译时的行为也可以是运行时的行为。

2,多态就是运行时的行为。方法的重写是多态,方法的重载不是多态。

package com.test;

import java.util.Random;

public class Test {

	public A get() {
		Random r = new Random();
		int i = r.nextInt(3);
		switch (i) {
		case 0:
			return new B();
		case 1:
			return new C();
		case 2:
			return new D();
		}
		return null;
	}
	
	public static void main(String[] args) {
		
		A a = new Test().get();
		a.test();
	}

}

class A{
	public void test(){
		System.out.println("A");
	}
}

class B extends A{
	public void test(){
		System.out.println("B");
	}
}

class C extends A{
	public void test(){
		System.out.println("C");
	}
}

class D extends A{
	public void test(){
		System.out.println("D");
	}
}


运行时 才知道具体是那个对象。

3,数组的比较

		char[] ch1 = new char[2];
		ch1[0] = 'a';
		ch1[1] = 'b';
		
		char[] ch2 = new char[2];
		ch2[0] = 'a';
		ch2[1] = 'b';
		
		System.out.println(ch1.equals(ch2));

输出false

		char[] ch1 = new char[2];
		ch1[0] = 'a';
		ch1[1] = 'b';
		
		char[] ch2 = new char[2];
		ch2[0] = 'a';
		ch2[1] = 'b';
		
		String s1 = new String(ch1);
		String s2 = new String(ch2);
		
		System.out.println(s1.equals(s2));
输出true

		char[] ch1 = new char[2];
		ch1[0] = 'a';
		ch1[1] = 'b';
		
		char[] ch2 = new char[2];
		ch2[0] = 'a';
		ch2[1] = 'b';
		
		System.out.println(Arrays.equals(ch1, ch2));

输出true

4,单态模式,特性 构造函数必须为private,返回方法必须为static

public class Test {
	
	private static Test test = new Test();
	
	private Test(){
	}
	
	public static Test getSingle(){
		return test;
	}
}
第一种写法

public class Test {
	
	private static Test test;
	
	private Test(){
	}
	
	public static Test getSingle(){
		if(test == null){
			test = new Test();
		}
		return test;
	}
}







IC版图设计布局经验90条! 13 如果一个cell调用其它cell,被调用的cell的vssx,vddx,vssb,vddb如果没有和外层cell连起来,要打上PIN,否则通不过diva检查.尽量在布局低层cell时就连起来。48 在匹配电路的mos管左右画上dummy,用poly,poly的尺寸与管子尺寸一样,dummy与相邻的第一个poly gate的间距等于poly gate之间的间距。8 更改cell时查看路径,一定要在正确的library下更改,以防copy过来的cell是在其他的library下,被改错。 阅读详情

相关推荐

基于Python的闲鱼商品价格评估模型:爬虫+价格预测全实现

本文介绍了一个完整的全球气候数据抓取与分析流程,采用轻量化的技术栈(requests+pandas+matplotlib+folium),实现以下核心功能: 全球城市定向抓取:支持自定义城市列表,自动获取经纬度并抓取多源气候数据 双数据源互补:结合OpenWeatherMap API(实时数据)和Climate-Data.org(历史数据) 全维度覆盖:采集气温、降水、湿度等核心指标,并进行自动化清洗转换 丰富可视化:生成热力图、趋势图和统计图表,支持地理定位展示 灵活扩展:模块化设计便于新增城市或扩展数据

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 3045

关于多态和数组的比较

1.父类或者接口类型的引用指向子类或者实现该接口的类的对象。 2.多态是运行时行为,不是编译时行为。比如可以通过一个随机数来的值来判断返回的子类或者接口实现类对象是哪个。再调用该对象的方法。 3.java中通过方法重写与方法重载来实现多态的说法是错误的。 4.在比较二个对象是否相等的时候,相等指的是equals方法的值。可以借用Arrays(Object[ ] ,Object[ ])来判断。

HEXINLI的专栏 788

材料力学小白必看:纯弯曲正应力计算全解析(附实例演示)

本文详细解析了材料力学中纯弯曲正应力的计算原理与工程应用,通过实例演示帮助初学者掌握关键公式和计算流程。内容涵盖纯弯曲的基本假设、正应力分布规律、截面特性计算,以及现代工具如Excel、ANSYS和Python在应力分析中的应用,特别适合材料力学小白系统学习。

sea99的博客 1232

Spring Bean Scope 有状态的Bean 无状态的Bean

 在Spring的Bean配置中,存在这样两种情况:  当然,scope的值不止这两种,还包括了request,session 等。但用的最多的还是singleton单态,prototype多态。singleton表示该bean全局只有一个实例,Spring中bean的scope默认也是singleton.prototype表示该bean在每次被注入的时候,都要重新创

懒散狂徒的专栏 1万+

医学图像配准实战:用Python实现MIND特征提取(附完整代码)

本文详细介绍了MIND(模态无关邻域描述符)在医学图像配准中的应用。通过Python和PyTorch实战,从原理到代码逐步解析了如何提取MIND特征,并利用其对结构而非灰度的感知能力,有效解决CT、MRI等多模态图像的对齐难题,为病灶追踪、手术导航等高级应用提供鲁棒性基础。

263

从零解析:富斯i6遥控器与STM32的IBUS协议通信实战

本文详细解析了富斯i6遥控器与STM32通过IBUS协议通信的实战指南,涵盖硬件准备、协议解析、驱动实现及常见问题解决。特别适合机器人及智能小车开发者,提供低成本、高可靠性的无线控制方案,助力快速实现多通道控制功能。

weixin_29193359的博客 440

Java面试题目之备忘十(多态)

多态 1 关于多态:父类或者接口类型的引用指向子类或者实现该接口的类的对象 import java.util.Random; public class PoliTest { public static void main(String[] args) { Parent2 p = new Child2(); p.doSomething(); ...

inotgaoshou的专栏 266

vue3中使用antv-S2表格(基础功能版)

表格的数值默认会渲染排序 icon, 可以配置 showDefaultHeaderActionIcon关闭。当配置为对象时,always 控制是否在子维度不足 2 个时始终展示小计,默认不展示。首先创建一个vue3+vite+ts项目,可以查看下面相关文章,只看第一条即可。可以调整行宽、列宽、列排序、单个单元格详情展示、选中某列、某行等基本功能。可以通过上面设置的SUM函数自动计算出数值,也可以自定义累加函数。配置自定义方法优先级大于配置聚合方式,即配置。1、在项目中安装(npm/pnpm都可以)

蜗牛~~ 2210

spring 单态模式

spring中的单例模式:  无论初始化几次类,保证仅有一个实例,通过调用静态方法来创建。 单态模式全部共享一个实例public class SingletonTets {  public static void main(String[] args) {  SingletonTets st1 = new SingletonTets().getInstance();  SingletonTe...

个人编程技术随笔 196

OpenClaw 2026 路线图详解:3 大协作能力升级与社区贡献增长 62% 的实证分析

介绍 OpenClaw 2026 如何通过上下文锚定(Context Anchoring)、协作质量定义和责任边界机制,将 AI 编程工具从单点补全升级为嵌入代码生命周期的协作对齐系统,并详解 `.openclaw/config.yaml` 中 `context_anchor` 配置的实操方法与效果

weixin_42545292的博客 382

共享单车数据抓取与分析:使用Python爬虫抓取共享单车使用数据与地图信息

通过本篇博客,我们展示了如何使用Python爬虫抓取共享单车的使用数据和地图信息,并通过简单的数据分析得出有价值的见解。在实际应用中,数据的收集与分析不仅能帮助城市管理者更好地规划单车站点,还能为用户提供更精准的单车使用体验。未来,我们可以将此分析与机器学习模型相结合,进一步预测单车的使用趋势,优化调度算法,实现更加智能的共享单车管理。

2201_76125261的博客 2204

equals比较两个对象的内容

public class java9_5 { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub String ch1=new String("java"); String ch2=new String("java"); String ch

u012575573的专栏 756

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

C++多态拷贝与静态数组工厂模式:实现高效类型分发与对象克隆

在C++面向对象编程中,多态性允许通过基类指针操作派生类对象,但拷贝构造函数是静态绑定的,无法直接实现基于运行时类型的对象复制。为解决这一问题,克隆模式通过虚函数clone()提供了多态拷贝的能力,其核心原理是利用虚函数动态绑定特性,在派生类中重写clone方法并调用自身拷贝构造函数。这一技术价值在于实现了对象创建与具体类型的解耦,提升了代码的可扩展性和维护性,常用于需要深拷贝对象集合或根据运行时信息创建对象的场景,如图形编辑器、游戏引擎、网络协议反序列化等。结合静态指针数组实现工厂模式,可以进一步优化性能

weixin_33910385的博客 366

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

c++中的if语句、switch语句、std::map以及多态比较

实现多分支逻辑的场景通常有几种技术手段可以选择if-elseswitchstd::map其他几种手段不必多说。多态是面向对象的核心概念之一,本文以策略模式为例比较多态与其他几种多分支技术的区别。策略模式的一般形式如下在实际编码中该如何选择使用哪一种技术手段呢?在做选择之前,先做个简单的比较if-elseswitchstd::map。

米碎师兄 1487

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

如何使用多态性数组

1)错误的使用多态性数组详细请见《More Effective C++》条款3,此处只贴出示例代码:#include #include using namespace std;class B{public:    virtual void print() const    {        cout     };};class D : public B{public:    vir

一刀的后院 1267

单例模式、饿汉模式、饱汉模式、双重锁定、静态内部类模式、处理非法创建单例的方法

设计模式 虑通过封装、 继承、 多态把程序的耦合度降低 传统印刷术 的问题就在于所有的字都刻在同一版面上造成耦合度太高所致,开始用设计模式使得程序更加的灵活, 容易修改, 井且易于复用 简单工厂模式 计算器实现 封装:计算和显示分开 这样就可以复用代码了 改进:应该把加减乘除等运算分离,修改其中一个不影响另外的几个,增加运算算法也不影响其他代码 继承:运算类—>加减乘除 多态:父类引用子...

fly_miqiqi的博客 925

LabVIEW(七):多态VI

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs.com/strengthen/)➤GitHub地址:https://github.com/strengthen/LeetCode➤原文地址:https://www.cnblogs.com/stren...

weixin_30270561的博客 2515

More Effective C++ 条款03:绝对不要以多态方式处理数组

More_Effective_C++03

君鼎的博客 560

适配器模式、多态、向上、向下转型

本文主要内容: (1)适配器模式 (2)多态 (3)向上、向下转型 1.利用自己描述的类ArrayBox创建对象(小容器) 存储一组元素,长度对于使用者来说是可变的,便于循环遍历(底层就是数组),频繁在ArrayBox中插入元素,从中间删除元素,性能都不高。 2.利用自己描述的类LinkedBox创建对象(小容器) 存储一组元素,长度对于使用者来讲是可变的,双向链表结构(底层实现Node对象、节点...

LiXingyue 402

设计模式拓展——多态

参考文章:https://www.cnblogs.com/wl-blog/p/10361894.html 1.什么是多态 2.多态有什么优势 3.多态怎么用 概念: 通过继承实现的不同对象调用相同的方法,表现出不同的行为,称之为多态。 多态有什么优势; 1、提高了代码的维护性(继承保证) 2、提高了代码的扩展性(由多态保证) public class Animal { ...

xyy631631的博客 365

动态多态分析及简单工厂模式分析

首先我们要知道动态多态是通过父类的引用指向子类的实例来实现的; 做了很多动态多态的题后;下图就是一个我们实现动态多态时常用的一个工厂化模式; 例题一:一只猫叫了,其他的猫也跟着有反应;人也有反应;老鼠也有反应; 在这里我们就可以分析,猫叫、猫有反应,老鼠也可以叫、老鼠也有反应,人也可以叫、人也有反应。 那么它们就可以共同指向一个可以有叫方法和反应方法的父类。 父类...

diku9497的博客 93

浅谈C# 多态的魅力(虚方法,抽象,接口实现)

浅谈C# 多态的魅力(虚方法,抽象,接口实现) 前言:我们都知道面向对象的三大特性:封装,继承,多态。封装和继承对于初学者而言比较好理解,但要理解多态,尤其是深入理解,初学者往往存在有很多困惑,为什么这样就可以?有时候感觉很不可思议,由此,面向对象的魅力体现了出来,那就是多态,多态用的好,可以提高程序的扩展性。常用的设计模式,比如简单工厂设计模式,核心就是多态。 其实多态就是:

胡杰的专栏 1万+

多态的使用场景以及优点和缺点

/编译看左边的父类中有没有name这个属性,没有就报错//在实际运行的时候,把父类name属性的值打印出来//编译看左边的父类中有没有show这个方法,没有就报错//在实际运行的时候,运行的是子类中的show方法f.show();

xvjian7的博客 2862

深入解析多态性:从虚函数表到设计模式的实战应用

多态性是面向对象编程的核心概念,它通过统一的接口实现对不同对象的操作,实现了‘做什么’与‘怎么做’的分离。其底层原理依赖于虚函数表(vtable)和动态绑定机制,在运行时根据对象的实际类型确定调用的具体方法。这种机制为构建灵活、可扩展的系统架构提供了技术基础,是降低模块间耦合度的关键。在工程实践中,多态性广泛应用于设计模式,如模板方法模式通过固定算法骨架、允许子类重写特定步骤来实现代码复用;策略模式则通过封装可互换的算法家族,支持运行时动态切换策略。这些模式在支付网关、数据导出、折扣计算等业务场景中发挥着重

weixin_30417487的博客 431

Java初级篇—设计模式之缺省适配器模式、多态

适配器模式 Adapter 案例描述:定义一个规则—>和尚 吃斋 念经 打坐 撞钟 习武 缺省适配器模式 public abstract class AbstractBox implements Box{ public boolean add(element); public void add(int index,int element){//具体化 //抛出自定义异常 } public void addAll(){//具体化 //抛出自定义异常

xiomarazark的博客 241

LabVIEW多态 VI (Polymorphic VIs)的使用

LabVIEW多态 VI (Polymorphic VIs)的使用 多态 VI (Polymorphic VIs) 是什么,什么时候可以使用它们? 解答: 多态 VI 最早是在 LabVIEW 6.0 被引入的, 它能够在指定的输入以及输出端口上接受不同的数据类型。不同的数据类型可以是指不同的数据表示法 (representations) 或不同的数据维数大小 (dimensions) 。 一个多态 VI 是一组子 VI 的集合, 这些子 VI 都有一个共同的特点, 它们的连线板模式都是一致的。每一个

bjcyck的博客 3330
上一篇: 9 &与&&有什么区别?| 内部类 | 泛型
下一篇: 11 多线程
hackq
博客等级 码龄20年 19粉丝 14原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值