接着上一章节。
(4)无参构造器初始化
这里我们来聊聊初始化的话题,特别是初始化基类,父类会怎样?
继续沿用上面的代码,我们做出一些精简。
package com.ray.testobject;
public class Test {
public static void main(String[] args) {
new Sub();
}
}
class Father {
public Father() {
System.out.println("create father");
}
}
class Sub extends Father {
public Sub() {
System.out.println("create Sub");
}
}
输出:
create father
create Sub
为什么?
其实,在编译的过程中,编译器已经为我们在子类里面new一个隐藏的父类,所以就会出现我们虽然只是new子类,但是父类也同时new。
而且有一点需要注意的是,父类是在子类之前就已经new出来的。
对于执行顺序这个东西,我们再来一个实验,因为说到顺序这个,我们就必须引进静态代码块,因为这个也是关键
package com.ray.testobject;
public class Test {
public static void main(String[] args) {
new Sub();
}
}
class Father {
private static int id;
static {
System.out.println("id:" + id);
System.out.println("a");
}
public Father() {
System.out.println("create father");
}
}
class Sub extends Father {
private static String name;
static {
System.out.println("name:" + name);
System.out.println("b");
}
public Sub() {
System.out.println("create Sub");
}
}
输出:
id:0
a
name:null
b
create father
create Sub
从输出结果可以看见执行顺序:
1.静态属性域
2.静态代码块
3.父类构造器
4.子类构造器
(5)有参构造器初始化
上面已经讨论了无参的情况,我们下面来聊一下有参的情况。
注意点:
1.子类必须具有相关参数的构造器
2.构造器必须引用super(父类)的构造器
package com.ray.testobject;
public class Test {
public static void main(String[] args) {
}
}
class Father {
public Father(int id) {
System.out.println("create father");
}
}
class Sub extends Father {
public Sub(int id) {
super(id);// 如果没有这一句,报错,找不到父类相关的构造器。
System.out.println("create Sub");
}
public Sub(int id, String name) {
super(id);// 如果没有这一句,报错,找不到父类相关的构造器。
System.out.println("create Sub");
}
}
就像sub的两个构造器,只要有相关的参数id(有其他参数也无所谓),而且构造器必须调用super()。
总结:这一章节主要讨论了有参和无参的构造器初始化情况。
这一章节就到这里,谢谢。
-----------------------------------
目录
版权声明:本文为博主原创文章,未经博主允许不得转载。
分享到:
相关推荐
分布外泛化(Out-of-Distribution Generalization, OOD)是深度学习领域的一个关键挑战,尤其是在现实世界的应用中,训练数据与测试数据的分布往往不完全相同,即非独立同分布(i.i.d.)假设通常无法满足。这篇由清华...
作者发现,即使使用弱模型生成的标签来微调强模型,强模型仍然可以表现出更好的性能,称为弱到强的一般化(weak-to-strong generalization)。这种现象表明,即使人类不能可靠地评估超人类模型的行为,也可以使用弱...
在《机器学习基石》课程笔记6中,林轩田教授主要讨论了机器学习中的泛化能力和成长函数,尤其是关于限制Break Point以及Bounding Function的基本和归纳案例。这些概念是理解机器学习算法性能的关键因素。...
泛化能力的理论(Theory of Generalization)是理解机器学习模型如何从训练数据中学习并预测新数据的关键。本讲座主要讨论了限制断点(Restriction of Break Point)以及边界函数(Bounding Function)的基本和归纳...
这种从一般到具体的层次结构,在面向对象编程中被称为**泛化-特化**(Generalization-Specialization)。在这个过程中,“车辆”是一个泛化的概念,而“汽车”、“卡车”则是特化的概念。 #### 继承的概念演变 ...
2) 大规模捕获系统:使用6,497个摄像头在89个不同地点部署,模拟真实世界的复杂环境。 3) 样本多样性:包括多样的背景和各种人物姿态,提高了模型训练的挑战性。 此外,研究者提出了一个领域泛化ReID方法,称为双元...
Deep Learning: Practical Neural Networks with Java by Yusuke Sugomori English | 8 Jun. 2017 | ASIN: B071GC77N9 | 1057 Pages | AZW3 | 20.28 MB Build and run intelligent applications by leveraging key ...
包含视频和源码: 02-Java-Swing-Basics 03-Probability-Simulation 04-Sort-Visualization 05-Maze-Solver 06-Maze-Generalization 07-Mine-Sweeper 08-Move-the-Box-Solver 09-Fractal-Drawing
医学图像分析中深度学习泛化的复杂性评估方法 此存储库中的代码基于我们的经验研究,该研究调查了针对乳房超声图像的监督深度学习分类器的复杂性度量与泛化能力之间的相关性。 该研究进行了。 用于医学图像分析的...
6-2 生成迷宫基础.mp4 6-3 深度优先遍历生成迷宫.mp4 6-4 非递归深度优先遍历生成迷宫.mp4 6-5 广度优先遍历生成迷宫.mp4 6-6 随机队列生成迷宫.mp4 6-7 迷宫生成的迷雾效果.mp4 6-8 生成随机性更强的迷宫.mp4 6-9 ...
机器视觉和机器学习中的Domain Generalization研究综述 Domain Generalization(域泛化)是机器学习和机器视觉领域中一个热门的研究方向。该技术旨在解决机器学习模型在不同环境、场景或数据分布下无法泛化的问题。...
(2+1)维广义浅水波方程的Lax对,Darbuox变换和孤子解,闻小永,高以天,利用奇异流形方法构造了(2+1)维广义浅水波方程的Lax和相关的Darbuox变换,通过使用得到的Darbuox变换,得到了该方程的一次和二次迭代解以及
generalization theory to partially address an open problem regarding the generalization of deep learning. Unlike previous bound-based theory, our main theory is quantitatively as tight as possible ...
1) to utilizethe qualities of each learned representation onthe path from raw inputs to outputs in representation learning, 2) to guarantee good generalization errors possibly with arbitrarily rich ...
在标题“A New Fuzzy Stacked Generalization Technique”和描述“A New Fuzzy Stacked Generalization Technique for Deep learning and Analysis of its Performance”中,我们可以挖掘到几个关键的知识点。...
Two experiments investigated the effectiveness of computer-assisted prosody training, its generalization to novel sentences and segmental accuracy, and the relationship between prosodic and lexical ...
### Java 必记单词解析 #### AbstractWindowToolkit (AWT) 抽象窗口工具包 - **定义**:AWT 是 Java 提供的一组用于创建图形用户界面 (GUI) 的类库,它允许开发者创建独立于操作系统的窗口、按钮、菜单等控件。 - *...
- **泛化(Generalization)**:泛化表示继承关系,UML中用箭头表示,Java中用`extends`关键字实现。 - **实现(Realization)**:实现关系表示类实现了接口的约定,Java中用`implements`关键字表示。 理解并熟练运用...
- **泛化(Generalization)**:泛化关系模拟了面向对象编程中的继承,用`extends`关键字在Java中表示。 - **实现(Realization)**:实现关系表示一个类实现了接口或继承了抽象类。在Java中,用`implements`或`extends...