继承内部类的构造器问题

CloudCompare二次开发(1)——获取指定高程的所有点 使用CloudCompare插件实现获取点云数据中指定高程的所有点。 阅读详情
代码如下:
  1. class Car {
  2.   class Wheel {
  3.   }
  4. }
  5. class PlaneWheel extends Car.Wheel {
  6.   PlaneWheel(Car car) {
  7.     car.super(); // 这句什么意思?为什么要这样写?
  8.   }
  9.   public static void main(String[] args) {
  10.     Car car = new Car();
  11.     PlaneWheel pw = new PlaneWheel(car);
  12.   }
  13. }
调用的是 Car.Wheel 的构造器
因为 你这个类,是集成自 Car.Wheel而不是 Car.
同样,因为你不是单纯的集成子Wheel,所以你必须有一个Car的实例,因为Wheel属于Car。

以下的几种情况都是错误的
  1. class Car {
  2.   class Wheel {
  3.     Wheel(int id) { // 不再有默认无参数构造器
  4.     }
  5.   }
  6. }
  7. class PlaneWheel extends Car.Wheel {
  8.   PlaneWheel(Car car) {
  9.     car.super(); // 这里会出现编译错误
  10.   }
  11.   public static void main(String[] args) {
  12.     Car car = new Car();
  13.     PlaneWheel pw = new PlaneWheel(car);
  14.   }
  15. }
不写调用
  1. class Car {
  2.   class Wheel {
  3.   }
  4. }
  5. class PlaneWheel extends Car.Wheel {
  6.   PlaneWheel(Car car) { // 不写调用,也会出现编译错误
  7.    
  8.   }
  9.   public static void main(String[] args) {
  10.     Car car = new Car();
  11.     PlaneWheel pw = new PlaneWheel(car);
  12.   }
  13. }
  1. class Car {
  2.   class Wheel {
  3.   }
  4. }
  5. class PlaneWheel extends Car.Wheel {
  6.   PlaneWheel(Car car) {
  7.     super();// 单纯的super,同样是错误的
  8.   }
  9.   public static void main(String[] args) {
  10.     Car car = new Car();
  11.     PlaneWheel pw = new PlaneWheel(car);
  12.   }
  13. }

LDRA Testbed(TBrun)软件单元测试_实例讲解(对多次调用的函数打桩) 在之前的文章《LDRA Testbed(TBrun)软件单元测试_操作指南》中,已经讲解了如何使用TBrun进行软件单元测试的基本操作步骤。本篇文章将结合实例进一步讲解被测函数中包含多次调用其他函数时,如何对其打桩来实现测试目的(详细的操作流程本文不再重述,若有不清楚的,可以结合之前的操作指南一起来看)。本文以一个被测函数作为示例,讲解了如何使用Testbed(TBrun)对涉及到多次调用其他函数的被测函数进行单元测试。本文的示例可能比较简单,但是思路、方法和流程都是通用的,希望对大家有所帮助。 阅读详情

相关推荐

Playwright自动化测试实战:攻克日历时间控件三大策略与Java实现

在Web自动化测试领域,元素定位与交互模拟是核心技术基础,其原理在于通过程序精确识别并操作页面中的DOM元素,以模拟真实用户行为。这项技术的核心价值在于提升测试效率、确保交互逻辑的覆盖度与可靠性,广泛应用于电商、金融、OA等系统的功能验证。日历时间控件作为典型的复杂交互组件,常涉及动态弹出层、多级导航与状态同步,是自动化测试中的常见难点。本文聚焦于使用Playwright工具,针对此类控件深入剖析了三种核心解决策略:从最高效的直接赋值、到全面模拟用户交互的主流方法,再到利用组件特性的混合定位方案,并结合Ja

weixin_28835551的博客 312

类的结构:属性、方法、构造器,代码块,内部类

一、类的结构之一:属性 field 类的设计中,两个重要结构之一:属性 对比:属性 vs 局部变量 1.相同点: * 1.1 定义变量的格式:数据类型 变量名 = 变量值 * 1.2 先声明,后使用 * 1.3 变量都有其对应的作用域 2.不同点: 2.1 在类中声明的位置的不同 * 属性:直接定义在类的一对{}内 * 局部变量:声明在类的结构内(方法内、方法形参、代码块内、构造器形参、...

habe33的博客 2966

保姆级教程:用GROMACS的FEP方法计算小分子结合自由能(附完整mdp配置)

本文提供了一份详细的GROMACS自由能微扰(FEP)计算教程,涵盖从系统准备、参数配置到结果分析的全流程。通过具体案例演示如何计算小分子结合自由能,包括λ窗口设计、动力学参数优化及并行化执行技巧,帮助研究者克服FEP计算中的常见问题,获得可靠的自由能数据。

weixin_30598225的博客 354

类的结构之构造器

构造器的使用----Constructor 1、什么是构造器 构造器通常也叫构造方法、构造函数,构造器在每个项目中几乎无处不在。 构造器最大的用处就是在创建对象时执行初始化,当创建一个对象时,系统会为这个对象的实例进行默认的初始化。如果想改变这种默认的初始化,就可以通过自定义构造器来实现。 [修饰符] 类名 (参数列表,可以没有参数){ //这里不能有return } 2、构造器的作用 创建对象。 初始化对象的信息。 3、说明 默认构造器: ​ 如果没有显示的定义构造器,则系统默认提供一个无

空颓空颓的博客 1219

2024最新实战:用1Panel面板+Docker快速部署Frps服务端(含Nginx配置模板)

本文详细介绍了2024年企业级内网穿透方案,通过1Panel面板和Docker技术快速部署Frps服务端,包含Nginx反向代理配置模板。从服务器选型、系统准备到安全加固,提供全栈实战指南,帮助企业和开发者高效实现内网穿透需求。

weixin_27966471的博客 422

AI 大模型在电商精准营销中的应用

例如,对于用户 A 和用户 B,通过比较他们对共同评价过的商品的评分差异来确定相似度。其中,(Gain(D,a))表示特征(a)对数据集(D)的信息增益,(Ent(D))表示数据集(D)的信息熵,(V)表示特征(a)的取值个数,(D^{v})表示特征(a)取值为(v)的样本子集。其中,(sim(A,B))表示用户 A 和用户 B 的相似度,(I)表示用户 A 和用户 B 共同评价过的商品集合,(R_{A,i})和(R_{B,i})分别表示用户 A 和用户 B 对商品(i)的评分。(三)营销活动效果预测。

alittlehippo的博客 1627

java类的五大特性(属性,方法,构造器,代码块,内部类)之内部类详解

java类有五大特效,属性,方法,构造器,代码块,内部类。 本文主要介绍的便是其中的内部类。 内部类的使用目的:减少代码的冗余量简化开发 内部类根据其所在的位置和相应语法有着不同的分类,其中主要可划分为以下四类:.........

qq_54870665的博客 1172

UG NX二次开发(C#)--详细讲述编程模板NXOpen_CS_Wizard的代码意义,帮你轻松进入NXOpen(C#)二次开发

有几个读者私信问我,在看了“NX1957在VS2019上二次开发的环境配置”后,能完成了UG NX二次开发(C#)模板的配置,也能根据模板创建工程,但是对工程文件.cs不甚理解;并且,在UG Styler新建完成后,其也有一个dlx文件和.cs文件,也不清楚怎么使用。本文先对UG NX二次开发(C#)模板文件进行讲解,在下一个博客中,讲解Styler新建后的模板文件。以上就是对编程模板NXOpen_CS_Wizard(c#)的讲解,其实只要明白了逻辑关系,编程实现只是时间问题,祝你好运。

GimiGimmy 1788

java(4)-深入理解java嵌套类、内部类以及内部类builder构建构造函数

一、什么是嵌套类及内部类   可以在一个类的内部定义另一个类,这种类称为嵌套类(nested classes),它有两种类型:静态嵌套类和非静态嵌套类。静态嵌套类使用很少,最重要的是非静态嵌套类,也即是被称作为内部类(inner)。嵌套类从JDK1.1开始引入。其中inner类又可分为三种:   其一、在一个类(外部类)中直接定义的内部类;   其二、在一个方法(外部类的方法)中

黄规速博客:学如逆水行舟,不进则退 4万+

RH850从0搭建Autosar开发环境【3X】- Davinci Configurator之BswM模块配置详解(上)

RH850从0搭建Autosar开发环境【3X】- Davinci Configurator之BswM模块配置详解(上)

weixin_42412049的博客 740

C++11、C++14 和 C++17 标准新特性详解

特性C++11C++14C++17auto类型推导✅范围 for 循环✅Lambda 表达式✅✅✅智能指针✅移动语义✅nullptr✅统一初始化{}✅✅constexpr✅✅✅✅数字分隔符✅结构化绑定✅✅✅文件系统库✅。

h a 6 6 6 c k 为 你解决复杂难题! 443

内部类详解

Java 内部类详解 分类编程技术 一.内部类基础 在 Java 中,可以将一个类定义在另一个类里面或者一个方法里面,这样的类称为内部类。广泛意义上的内部类一般来说包括这四种:成员内部类、局部内部类、匿名内部类和静态内部类。下面就先来了解一下这四种内部类的用法。 1.成员内部类 成员内部类是最普通的内部类,它的定义为位于另一个类的内部,形如下面的形式: class Circle { double radius = 0; public Circle(double r.

qq_35810741的博客 691

C#上位机3D可视化:HelixToolkit.Wpf集成点云/模型(机器人臂姿态实时监控)

核心控件是3D可视化的核心,需搭配和网格辅助定位;模型加载:按关节拆分机械臂模型,通过组合平移+旋转实现姿态控制;姿态更新:将机器人关节角度转换为3D模型的旋转变换,工业场景需从控制器实时获取角度;点云渲染:通过实现点云加载,需注意坐标系转换和性能优化。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 716

java炒冷饭系列13 内部类的继承

内部类的继承因为内部类的构造器必须连接到指向其外围类对象的引用,所以在继承内部类的时候,事情会变得有点复杂。问题在于,那个指向外围类对象的“秘密的”引用必须被初始化,而在导出类中不再存在可连接默认对象。要解决这个问题,必须使用特殊的语法来明确说清它们之间的关联:class WithInner{ class Inner{} } public class InheritInner extends

weixin_36210698的博客 909

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

java 内部类的继承

因为内部类的构造器必须连接到指向其外部类对象的引用. 因为在继承内部类的时候那个指向外部类对象的"秘密的"引用必须被初始化,而在导出类中不再存在可连接的默认对象,要解决这个问题必须用特殊的语法来明确说清它么之间的关联: //: innerclasses/InheritInner.java // Inheriting an inner class. class WithInner { ...

weixin_30703911的博客 192

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

内部类的继承

因为内部类的构造器必须连接到指向其外围类对象的引用,所以在继承内部类的时候,情况会变得有些复杂。问题在于,那个指向外围类对象的“秘密的”引用必须被初始化,而在导出类中不在存在可连接的默认对象。要解决这个问题,必须使用特殊的语法来说清它们之间的关联。 1 //外部类 2 class Outer{ 3 //内部类 4 public Outer(){ 5 ...

weixin_33943836的博客 105

java内部类构造,Java中的内部类构造

I've read about class fromal parameters and the question then arises as to why the following code is ill-formed?class A:package org.gradle;public class A extends B.Inner{public A(B s){s.super(new B())...

weixin_29159441的博客 183

对于内部类中super()的疑惑和实验

继承外部类的内部类,当生成一个构造器时候,需要一个指向外部类对象的引用和调用外部类对象的super()方法, 然而super()一直以为是调用父类的构造函数,在本例中使用,居然是可以调用内部类的构造函数。先留个疑问,如果以后想到了再来继续说明。 class WithInner { WithInner() { System.out.println("调用外部类构造方法");

初级菜鸟 2391

Java内部类总结2

­  在这个匿名内部类中,使用了缺省的构造器来生成Contents。下面的代码展示的是,如果你的基类需要一个有参数的构造器,应该怎么办: ­public class Parcel7 { public Wrapping wrap(int x) { // Base constructor call: return new Wrapping(x) { // Pass const

luckstar的专栏 490

深入浅出Java匿名内部类:用法详解与实例演示

匿名内部类(Anonymous Inner Class)在Java中是一种非常有用的特性,它允许你在一个类的定义中直接创建并实例化一个内部类,而不需要为这个内部类指定一个名字。

Shayne 的博客 1486

Java基础---抽象类、接口、内部类

1.由abstract修饰的类为抽象类,也可以修饰方法,使其成为抽象方法2.抽象类中可以没有抽象方法,但有抽象方法的类一定要声明为抽象类3.抽象类不可使用new关键字创建对象,它是用于子类继承的4.抽象方法只有方法的声明,而没有具体的实现,让子类来实现5.子类继承抽象类,必须实现抽象类中的抽象方法,否则子类也要声明为抽象类存在,虽然不能通过实例化创建对象,但是继承抽象类的子类可以调用抽象类的构造方法。

qq_61685605的博客 239

Java内部类总结 (吐血之作)

内部类是指在一个外部类的内部再定义一个类。内部类作为外部类的一个成员,并且依附于外部类而存在的。 内部类可为静态,可用protected和private修饰(而外部类只能使用public和缺省的包访问权限)。 内部类主要有以下几类:成员内部类、局部内部类、静态内部类、匿名内部类   为什么需要内部类?   典型的情况是,内部类继承自某个类或实现某个接口,内部类的代码操作创建

一个执着的程序员 5万+

Java 内部类知识点

1、当生成一个内部类的对象时,此对象与制造它的外围对象之间就有了一种联系,所以它能访问其外围对象的所有成员,而不需要任何条件。此外,内部类还拥有其外围类的所有元素的访问权。这是如何做到的呢?当某个外围类的对象创建了一个内部类对象时,此内部类对象必定会秘密地捕获一个指向那个外围类对象的引用。然后,在你访问此外围类的成员时,就是用那个引用来选择外围类的成员。而这些所有细节,都是编译器帮你处理了。 如

json_it的博客 632

10 内部类 Innerclasses

啥是内部类呢? 可以将一个类的定义放在另一个类的内部,这就是内部类。 这是一种代码隐藏机制 在外部类中有一个指向内部类引用的方法,可以用来构造内部类 Innerclass i = new Innerclass() ;   如果想从外部类的非静态方法之外的任何地方创建某个内部类对象,就必须指明这个对象具体的类型,Outer.Inner public Inner getInner() { ...

gosick_的博客 229

详解JAVA内部类

内部类我们从外面看是非常容易理解的,无非就是在一个类的内部在定义一个类。 public class OuterClass { private String name ; private int age; public String getName() { return name; } public void setName(String

Smile&搁浅 544
上一篇: 高并发时让某段代码只运行一次的方法
下一篇: 深入研究java对String字符串对象的创建以及管理
老紫竹
博客等级 码龄19年 1万+粉丝 1252原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值