当前位置: 首页 > news >正文

Java和Ts构造函数的区别

java中子类在使用有参构造创建对象的时候不必要必须调用父类有参构造
而js则必须用super()调用父类的有参构造,即使用不到也必须传递

Java 中的处理方式

  1. 可选择性参数:

    • 在 Java 中,当子类使用父类的有参构造方法创建对象时,可以只传递需要的参数。如果父类的构造方法有多个参数,子类可以选择不传递某些参数,只传递那些需要的参数。
  2. 构造函数重载:

    • Java 支持构造函数重载,因此可以为父类定义多个构造函数,子类可以调用合适的构造函数。
class Animal {private String name;private int age;// 有参构造public Animal(String name, int age) {this.name = name;this.age = age;}public Animal(String name) {this.name = name;this.age = 0; // 默认年龄}public void sayHello() {System.out.println("动物在叫~");}
}class Dog extends Animal {public Dog(String name) {super(name); // 只需传递 name,age 使用默认值}public void sayHello() {System.out.println("汪汪汪汪!");}
}// 使用示例
Dog dog = new Dog("旺财");

JavaScript/TypeScript 中的处理方式

  1. 必须传递的参数:
    • 在 JavaScript(TypeScript)中,如果子类的构造函数调用父类的有参构造函数,必须传递所有的参数,尽管子类可能不需要使用某些参数。这是因为 JavaScript 不支持构造函数重载,所有必要的参数都需要传递以确保父类的正确初始化。
示例(JavaScript/TypeScript)
class Animal {name: string;age: number;constructor(name: string, age: number) {this.name = name;this.age = age;}sayHello() {console.log('动物在叫~');}
}class Dog extends Animal {constructor(name: string, age: number) {super(name, age); // 必须传递所有参数}sayHello() {console.log('汪汪汪汪!');}
}// 使用示例
const dog = new Dog('旺财', 3); // 必须传递 age
  • Java: 子类在构造对象时可以选择性地传递父类构造函数的参数,且可以通过重载实现多个构造函数。
  • JavaScript/TypeScript: 子类在构造对象时必须将父类构造函数的所有参数都传递,即使子类不需要使用某些参数。

  1. 构造函数重载:

    • Java: 支持构造函数重载,可以在同一类中定义多个构造函数,参数可以有不同的数量和类型。
    • TypeScript: 不支持构造函数重载,定义多个构造函数会导致错误。可以通过可选参数或默认参数来模拟重载。
  2. 参数传递:

    • Java: 子类在调用父类的构造函数时,可以选择性地传递参数。例如,可以只传递部分参数,使用默认值或其他构造函数。
    • TypeScript: 子类必须传递父类构造函数中定义的所有参数,无法选择性传递。
  3. 访问控制:

    • Java: 有严格的访问控制(public、protected、private),可以控制构造函数的可见性。
    • TypeScript: 也支持访问修饰符,允许设置构造函数的访问级别,但在实践中使用较少。
  4. 构造函数的调用:

    • Java: 使用 super() 调用父类构造函数是可选的,只要父类有无参构造函数。
    • TypeScript: 如果子类定义了构造函数,必须在子类构造函数的第一行调用 super(),并传递必要的参数。
  5. 初始化方式:

    • Java: 可以在构造函数中进行复杂的初始化逻辑。
    • TypeScript: 也可以在构造函数中进行初始化,但由于 JavaScript 的动态特性,类型检查和初始化逻辑可能会有所不同。
  6. 类型系统:

    • Java: 是静态类型语言,类型在编译时检查。
    • TypeScript: 是一个超集,提供静态类型,但最终会编译成动态类型的 JavaScript,因此类型检查是在开发时进行的。

相关文章:

Java和Ts构造函数的区别

java中子类在使用有参构造创建对象的时候不必要必须调用父类有参构造 而js则必须用super()调用父类的有参构造,即使用不到也必须传递 Java 中的处理方式 可选择性参数: 在 Java 中,当子类使用父类的有参构造方法创建对象时,可以只传递需要的参数。如果父…...

植物健康,Spring Boot来助力

3系统分析 3.1可行性分析 通过对本植物健康系统实行的目的初步调查和分析,提出可行性方案并对其一一进行论证。我们在这里主要从技术可行性、经济可行性、操作可行性等方面进行分析。 3.1.1技术可行性 本植物健康系统采用SSM框架,JAVA作为开发语言&#…...

百度文心一言接入流程-java版

百度文心一言接入流程-java版 一、准备工作二、API接口调用-java三、百度Prompt工程参考资料: 百度文心一言:https://yiyan.baidu.com/百度千帆大模型:https://qianfan.cloud.baidu.com/百度千帆大模型文档:https://cloud.baidu.com/doc/WENXINWORKSHOP/index.html千tokens…...

Java 11 新特性深度解析与应用实践

Java 作为一种广泛应用的编程语言,不断演进以满足开发者日益增长的需求和适应技术的发展趋势。Java 11 带来了一系列重要的新特性和改进,这些变化不仅提升了语言的性能和功能,还为开发者提供了更好的开发体验和工具。本文将深入探讨 Java 11 …...

druid 连接池监控报错 Sorry, you are not permitted to view this page.本地可以,发布正式出错

简介: druid 连接池监控报错 Sorry, you are not permitted to view this page. 使用Druid连接池的时候,遇到一个奇怪的问题,在本地(localhost)可以直接打开Druid连接池监控,在其他机器上打开会报错&#…...

[RN与H5] 加载线上H5通信失败问题记录(启动本地H5服务OK)

RT: nextjs项目 在本地启动H5服务, 本地开发都OK 发布到线上后, 效果全无, 经排查发现, 写了基本配置的js脚本在挂载时机上的差异导致 根本原因是...

electron 打包

安装及配置 安装electron包以及electron-builder打包工具 # 安装 electron cnpm install --save-dev electron # 安装打包工具 cnpm install electron-builder -D 参考的package.json文件 其中description和author为必填项目 {"name": "appfile",&qu…...

ChatGLM-6B和Prompt搭建专业领域知识问答机器人应用方案(含完整代码)

目录 ChatGLM-6B部署 领域知识数据准备 领域知识数据读取 知识相关性匹配 Prompt提示工程 领域知识问答 完整代码 本文基于ChatGLM-6B大模型和Pompt提示工程搭建医疗领域知识问答机器人为例。 ChatGLM-6B部署 首先需要部署好ChatGLM-6B,参考 ChatGLM-6B中英双…...

虚拟机配置静态IP地址(人狠话不多简单粗暴)

1.先找到以下位置: 2. 虚拟机中执行vi /etc/sysconfig/network-scripts/ifcfg-ens33 根据上图信息修改配置文件内容: 静态IP地址设置不超过255就行,我这里弄得100,没毛病。 3.修改并保存文件后,重启网络执行&#…...

Android token JJWT

在Android开发领域,JJWT(Java JWT,即Java Json Web Token)库是一个流行的工具,用于处理JSON Web Tokens(JWTs)。JWT是一种轻量级的、自包含的、基于JSON的用于双方之间安全传输信息的简洁的、UR…...

动态规划<一>初识动态规划

目录 认识动态规划 LeetCodeOJ练习 斐波那契数列模型 认识动态规划 1.动态规划是一种用于解决优化问题的算法策略。 2.它的核心原理是把一个复杂的问题分解为一系列相互关联的子问题。通过先求解子问题,并且记录这些子问题的解(通常用一个表格之类的…...

【AIGC】ChatGPT提示词Prompt精确控制指南:Scott Guthrie的建议详解与普通用户实践解析

博客主页: [小ᶻZ࿆] 本文专栏: AIGC | ChatGPT 文章目录 💯前言💯斯科特古斯里(Scott Guthrie)的建议解读人机交互设计的重要性减轻用户认知负担提高Prompt的易用性结论 💯普通用户视角的分析普通用户…...

2024年10月24日随笔

1024程序员节啊,现在已经是晚上的十点半了,我还在实验室里没走,刚把力扣的每日一题写完,好忙啊,好忙啊,好忙啊,为什么都大三了我还不能做自己的事情,今天老师开会说要给互联网加大赛…...

怎么做系统性能优化

对于软件或系统的性能优化,可以采取多种措施来提高效率和响应速度。这里为您列举一些常见的方法: 1. 代码优化:检查并优化算法复杂度,减少不必要的计算。使用更高效的数据结构和算法。 2. 数据库优化: •索引优化&…...

负载均衡:四层与七层

负载均衡建立在现在网络基础之上,提供一种廉价透明有效的方式扩展网络设备和服务器带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。负载均衡可分为七层负载与四层负载。 四层负载(目标地址与端口交换) 主要通过报文中…...

【Ubuntu】服务器系统重装SSHxrdpcuda

本文作者: slience_me Ubuntu系统重装操作合集 文章目录 Ubuntu系统重装操作合集1.1 系统安装:1.2 安装openssh-server更新系统包安装OpenSSH服务器检查SSH服务的状态配置防火墙以允许SSH测试SSH连接配置SSH(可选) 1.3 安装远程连…...

ChatGPT的模型训练入门级使用教程

ChatGPT 是由 OpenAI 开发的一种自然语言生成模型,基于 Transformer 架构的深度学习技术,能够流畅地进行对话并生成有意义的文本内容。它被广泛应用于聊天机器人、客户服务、内容创作、编程助手等多个领域。很多人对如何训练一个类似 ChatGPT 的语言模型…...

【OS】2.1.2 进程的状态与转换_进程的组织

✨ Blog’s 主页: 白乐天_ξ( ✿>◡❛) 🌈 个人Motto:他强任他强,清风拂山冈! 🔥 所属专栏:C深入学习笔记 💫 欢迎来到我的学习笔记! 一、进程的状态 1.1.创建态 ……的…...

和为 n 的完全平方数的最少数量

给你一个整数 n ,返回 和为 n 的完全平方数的最少数量 。 完全平方数 是一个整数,其值等于另一个整数的平方;换句话说,其值等于一个整数自乘的积。例如,1、4、9 和 16 都是完全平方数,而 3 和 11 不是。 示…...

Hallo2 长视频和高分辨率的音频驱动的肖像图像动画 (数字人技术)

HALLO2: LONG-DURATION AND HIGH-RESOLUTION AUDIO-DRIVEN PORTRAIT IMAGE ANIMATION 论文:https://arxiv.org/abs/2410.07718 代码:https://github.com/fudan-generative-vision/hallo2 模型:https://huggingface.co/fudan-generative-ai/h…...

java_网络服务相关_gateway_nacos_feign区别联系

1. spring-cloud-starter-gateway 作用:作为微服务架构的网关,统一入口,处理所有外部请求。 核心能力: 路由转发(基于路径、服务名等)过滤器(鉴权、限流、日志、Header 处理)支持负…...

Redis相关知识总结(缓存雪崩,缓存穿透,缓存击穿,Redis实现分布式锁,如何保持数据库和缓存一致)

文章目录 1.什么是Redis?2.为什么要使用redis作为mysql的缓存?3.什么是缓存雪崩、缓存穿透、缓存击穿?3.1缓存雪崩3.1.1 大量缓存同时过期3.1.2 Redis宕机 3.2 缓存击穿3.3 缓存穿透3.4 总结 4. 数据库和缓存如何保持一致性5. Redis实现分布式…...

uni-app学习笔记二十二---使用vite.config.js全局导入常用依赖

在前面的练习中,每个页面需要使用ref,onShow等生命周期钩子函数时都需要像下面这样导入 import {onMounted, ref} from "vue" 如果不想每个页面都导入,需要使用node.js命令npm安装unplugin-auto-import npm install unplugin-au…...

React19源码系列之 事件插件系统

事件类别 事件类型 定义 文档 Event Event 接口表示在 EventTarget 上出现的事件。 Event - Web API | MDN UIEvent UIEvent 接口表示简单的用户界面事件。 UIEvent - Web API | MDN KeyboardEvent KeyboardEvent 对象描述了用户与键盘的交互。 KeyboardEvent - Web…...

NFT模式:数字资产确权与链游经济系统构建

NFT模式:数字资产确权与链游经济系统构建 ——从技术架构到可持续生态的范式革命 一、确权技术革新:构建可信数字资产基石 1. 区块链底层架构的进化 跨链互操作协议:基于LayerZero协议实现以太坊、Solana等公链资产互通,通过零知…...

论文阅读笔记——Muffin: Testing Deep Learning Libraries via Neural Architecture Fuzzing

Muffin 论文 现有方法 CRADLE 和 LEMON,依赖模型推理阶段输出进行差分测试,但在训练阶段是不可行的,因为训练阶段直到最后才有固定输出,中间过程是不断变化的。API 库覆盖低,因为各个 API 都是在各种具体场景下使用。…...

redis和redission的区别

Redis 和 Redisson 是两个密切相关但又本质不同的技术,它们扮演着完全不同的角色: Redis: 内存数据库/数据结构存储 本质: 它是一个开源的、高性能的、基于内存的 键值存储数据库。它也可以将数据持久化到磁盘。 核心功能: 提供丰…...

从实验室到产业:IndexTTS 在六大核心场景的落地实践

一、内容创作:重构数字内容生产范式 在短视频创作领域,IndexTTS 的语音克隆技术彻底改变了配音流程。B 站 UP 主通过 5 秒参考音频即可克隆出郭老师音色,生成的 “各位吴彦祖们大家好” 语音相似度达 97%,单条视频播放量突破百万…...

goreplay

1.github地址 https://github.com/buger/goreplay 2.简单介绍 GoReplay 是一个开源的网络监控工具,可以记录用户的实时流量并将其用于镜像、负载测试、监控和详细分析。 3.出现背景 随着应用程序的增长,测试它所需的工作量也会呈指数级增长。GoRepl…...

qt+vs Generated File下的moc_和ui_文件丢失导致 error LNK2001

qt 5.9.7 vs2013 qt add-in 2.3.2 起因是添加一个新的控件类,直接把源文件拖进VS的项目里,然后VS卡住十秒,然后编译就报一堆 error LNK2001 一看项目的Generated Files下的moc_和ui_文件丢失了一部分,导致编译的时候找不到了。因…...