文档章节

Java初始化基础类知识点学习

e
 erdan522
发布于 2017/08/21 17:24
字数 968
阅读 2
收藏 0

  Java初始化基础类知识点学习,Java研发工程师,最缺乏人才的职业之一,以实战项目为主的教学方法,掌握实用的技能与经验,有效地缩短同企业用人需求的差距。以下是关于Java初始化基础类知识点学习,大家一起来学习下Java编程语言。
 

 
  Java初始化基础类知识点学习:
 
  由于这儿涉及到两个类基础类及衍生类,而不再是以前的一个,所以在想象衍生类的结果对象时,可能会产生一些迷惑。从外部看,似乎新类拥有与基础类相同的接口,而且可包含一些额外的方法和字段。但继承并非仅仅简单地复制基础类的接口了事。创建衍生类的一个对象时,它在其中包含了基础类的一个"子对象"。这个子对象就象我们根据基础类本身创建了它的一个对象。从外部看,基础类的子对象已封装到衍生类的对象里了。
 
  当然,基础类子对象应该正确地初始化,而且只有一种方法能保证这一点:在构建器中执行初始化,通过调用基础类构建器,后者有足够的能力和权限来执行对基础类的初始化。在衍生类的构建器中,Java会自动插入对基础类构建器的调用。下面这个例子向大家展示了对这种三级继承的应用:
 
  //: Cartoon.java
 
  // Constructor calls during inheritance
 
  class Art {
 
  Art() {
 
  System.out.println("Art constructor");
 
  }
 
  }
 
  class Drawing extends Art {
 
  Drawing() {
 
  System.out.println("Drawing constructor");
 
  }
 
  }
 
  public class Cartoon extends Drawing {
 
  Cartoon() {
 
  System.out.println("Cartoon constructor");
 
  }
 
  public static void main(String[] args) {
 
  Cartoon x = new Cartoon();
 
  }
 
  } ///:~
 
  该程序的输出显示了自动调用:
 
  Art constructor
 
  Drawing constructor
 
  Cartoon constructor
 
  可以看出,构建是在基础类的"外部"进行的,所以基础类会在衍生类访问它之前得到正确的初始化。
 
  即使没有为Cartoon()创建一个构建器,编译器也会为我们自动合成一个默认构建器,并发出对基础类构建器的调用。
 
  1. 含有自变量的构建器
 
  上述例子有自己默认的构建器;也就是说,它们不含任何自变量。编译器可以很容易地调用它们,因为不存在具体传递什么自变量的问题。如果类没有默认的自变量,或者想调用含有一个自变量的某个基础类构建器,必须明确地编写对基础类的调用代码。这是用super关键字以及适当的自变量列表实现的,如下所示:
 
  //: Chess.java
 
  // Inheritance, constructors and arguments
 
  class Game {
 
  Game(int i) {
 
  System.out.println("Game constructor");
 
  }
 
  }
 
  class BoardGame extends Game {
 
  BoardGame(int i) {
 
  super(i);
 
  System.out.println("BoardGame constructor");
 
  }
 
  }
 
  public class Chess extends BoardGame {
 
  Chess() {
 
  super(11);
 
  System.out.println("Chess constructor");
 
  }
 
  public static void main(String[] args) {
 
  Chess x = new Chess();
 
  }
 
  } ///:~
 
  如果不调用BoardGames()内的基础类构建器,编译器就会报告自己找不到Games()形式的一个构建器。除此以外,在衍生类构建器中,对基础类构建器的调用是必须做的第一件事情(如操作失当,编译器会向我们指出)。
 
  2. 捕获基本构建器的违例
 
  正如刚才指出的那样,编译器会强迫我们在衍生类构建器的主体中首先设置对基础类构建器的调用。这意味着在它之前不能出现任何东西。正如大家在第9章会看到的那样,这同时也会防止衍生类构建器捕获来自一个基础类的任何违例事件。显然,这有时会为我们造成不便。
 
       西安UI培训          西安软件测试培训             西安java培训机构

本文转载自:

共有 人打赏支持
e
粉丝 0
博文 46
码字总数 29252
作品 0
平谷
私信 提问
给Java新手的一些建议——Java知识点归纳(Java基础部分)

  写这篇文章的目的是想总结一下自己这么多年来使用java的一些心得体会,主要是和一些java基础知识点相关的,所以也希望能分享给刚刚入门的Java程序员和打算入Java开发这个行当的准新手们,...

Java工程师-10
2017/05/24
509
2
Java编程基础知识点和技术点归纳

Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于PC、数据中心、游戏控制台、科学超级计算机、移动电话和互...

Java小辰
05/23
0
0
JVM系列开篇:为什么要学虚拟机?

跟许多人一样,我一开始接触 Java 虚拟机只是因为面试需要用到,所以硬着头皮看看。所以很多人对于为什么要学虚拟机这个问题,他们的答案都是:因为面试。但我经过了几年的学习和实战,我发现...

陈树义
11/06
0
0
大数据开发培训:0基础学习Java编程语言有哪些知识点?

Java 技术通用、高效、具有平台移植性和安全性,广泛应用于PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网等,学习Java首先要知道学习知识点有哪些。在这就用加米谷大数据培训...

加米谷大数据
07/25
0
0
一份关于 Java、Kotlin 与 Android 的学习笔记

JavaKotlinAndroidLearn 这是一份关于 Java 、Kotlin 、Android 的学习笔记,既包含对基础知识点的介绍,也包含对一些重要知识点的源码解析,笔记的大纲如下所示: Java 重拾Java(0)-基础知...

叶应是叶
08/08
0
0

没有更多内容

加载失败,请刷新页面

加载更多

telegram_bot

new group -> 选择人 -> 填写群名 搜索BotFather -> start =========================== ou can control me by sending these commands: /newbot - create a new bot /mybots - edit your bo......

八戒八戒八戒
3分钟前
0
0
Spring boot中使用Jackson ObjectMapper注入

问题 本身spring boot已经集成了Jackson的库,我想自己在Controller中直接使用Spring默认的ObjectMapper,应该怎么做? RestController.java public class RestController { private fi...

亚林瓜子
8分钟前
0
0
老男孩 - python函数编程day2

mark

以谁为师
23分钟前
1
0
【58沈剑 架构师之路】缓存,究竟是淘汰,还是修改?

允许cache miss的场景,不管是memcache还是redis,当被缓存的内容变化时,是修改缓存,还是淘汰缓存?这是今天将要讨论的话题。 问:KV缓存都缓存了一些什么数据? 答: (1)朴素类型的数据...

张锦飞
24分钟前
1
0
Spring异常之Druid – unregister mbean error set JAVA_OPTS="-Ddruid.registerToSysProperty=true"

Spring异常之Druid – unregister mbean error 2017年04月19日 12:13:42 Dr.Zhu 阅读数:6688 版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zt_fucker/arti...

linjin200
26分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部