6动手动脑和课堂例子

1、动手动脑:继承条件下的构造方法调用(TestInherits.java)

1)super(参数):调用基类中的某一个构造函数(应该为构造函数中的第一条语句) ,super: 它引用当前对象的直接父类中的成员(用来访问直接父类中被隐藏的父类中成员数据或函数,基类与派生类中有相同成员定义时如:super.变量名 super.成员函数据名(实参)。super()从子类中调用父类的构造方法。调用super()必须写在子类构造方法的第一行,否则编译不通过。每个子类构造方法的第一条语句,都是隐含地调用super(),如果父类没有这种形式的构造函数,那么在编译的时候就会报错。super()需放在构造方法内第一行。

2)为什么子类的构造方法在运行之前,必须调用父类的构造方法?能不能反过来?为什么不能反过来?

不行的。子类继承了父类的各种属性,而构造方法则相当于把父类给实例化出来,如果你子类实例化的时候不调用父类的构造方法,相当于子类压根就没有父亲,就不能继承。

3)截图

2、课堂例子:ExplorationJDKSource.java

1)程序中创建一个没有成员变量的类,在堆栈中给这个类分配了内存,输出地址。

2)截图

3、课堂例子:Fruit.java

1)在“+”运算中,当任何一个对象与一个String对象,连接时,会隐式地调用其toString()方法,默认情况下,此方法返回“类名 @ + hashCode”。为了返回有意义的信息,子类可以重写toString()方法

2)截图

4、课堂例子:Address.java

1)所谓不可变类,是指当创建了这个类的实例后,就不允许修改它的属性值。在JDK的基本类库中,所有基本类型的包装类,如Integer和Long类,都是不可变类,java.lang.String也是不可变类,虽然他不是基本类型。

2)截图

时间: 2024-08-14 09:26:04

6动手动脑和课堂例子的相关文章

动手动脑(课堂作业05)

1,思考 class Grandparent { public Grandparent() { System.out.println("GrandParent Created."); } public Grandparent(String string) { System.out.println("GrandParent Created.String:" + string); } } class Parent2 extends Grandparent { publi

动手动脑及课堂作业

一.运行课件中的例题ParentChildTest.java,回答下列问题: a.左边的结果运行结果是什么? 运行结果截图为: b.你如何解释会得到这样的输出? 第一个值:父类Parent调用自己的方法: 第二个值:子类child调用方自己的方法: 第三个值:子类将自己的方法赋给父类,因而实际调用的是子类的方法: 第四个值:父类中的值MyValue加一,但是父类调用的是子类的方法,因而无影响: 第五个值:强制转化,父类将值赋给子类,调用的仍然是子类的方法,只是值加一 c.计算机是不会出错的,之所

动手动脑(课堂作业05)第二句错误显示为:类型不匹配:不能从 Mammal 转换为 Dog 第三句错误显示为:类型不匹配:不能从 Cat 转换为 Dog

---恢复内容开始--- 为什么子类的构造方法在运行之前,必须调用父类的构造方法?能不能反过来?为什么不能反过来? 构造函数(constructor)是一种特殊的方法 .主要用来在创建对象时初始化对象, 即为对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中 .特别的一个类可以有多个构造函数 ,可根据其参数个数的不同或参数类型的不同来区分它们 即构造函数的重载.构造函数的功能主要用于在类的对象创建时定义初始化的状态.构造一个对象,先调用其构造方法,来初始化其成员函数和成员变量.子类

Java课堂动手动脑-截图集锦

课堂实践性问题 没有数据类型,名称与类名相同,没有返回值 类本身有自定义的构造方法,调用时应有参数,这时系统不再使用默认构造方法 类字段初始化顺序 1.执行类成员定义时指定的默认值或累的初始化块,执行哪一个看哪一个排在前面. 2.执行类的构造函数 动手动脑问题(类之间继承,创建子类对象导致父类初始化块的执行) 静态初始化执行顺序 1.静态初始化块只执行一次 2.创建子类的对象时,父类的初始化块也会执行 静态方法访问实例成员变量如下:

课堂作业及 动手动脑问题整理

课堂作业一 使用类的静态字段和构造函数,我们可以跟踪某个类所创建对象的个数.请写一个类,在任何时候都可以向它查询“你已经创建了多少个对象?”. 程序: package com; public class Duixiang { public static void main(String[] args){ duixiang a=new duixiang(); a.out(); duixiang b=new duixiang(); b.out(); } } class duixiang{ stati

动手动脑课堂作业7---------

动手动脑1 CatchWho.java运行结果: CatchWho2.java运行结果: EmbedeFinally.java运行结果: finally语句块一定会执行吗? SystemExitAndFinally.java运行结果: 只有与 finally 相对应的 try 语句块得到执行的情况下,finally 语句块才会执行.如果在try语句块之前返回(return)或者抛出异常,try对应的finally语句块就不会执行. 动手动脑2 如何跟踪异常的传播路径? 当程序中出现异常时,JVM

Java动手动脑第四讲课堂作业

动手动脑1 完全"手写代码实现"随机数生成 纯随机数发生器 Modulus=231-1=int.MaxValue Multiplier=75=16807 C=0 当显示过231-2个数之后,才可能重复. 编写一个方法,使用以上算法生成指定数目(比如1000个)的随机整数. public class suiji { private static final int N = 200; private static final int LEFT = 40; private static fi

10月14日课堂动手动脑

动手动脑 一.为何下面的代码无法编译 public class D1 { public static void main(String[] args) { //int a=1; Foo f=new Foo(); //System.out.println(f.value); } } class Foo{ int value; public Foo(int i) { value=i; } } 原因是当类中有自己定义的构造函数时,初始化时要传参进行初始化. 如果类提供了一个自定义的构造方法,将导致系统

多态与异常------动手动脑

课堂动手动脑 1.    下面那个语句会引起编译错误? class Mammal{} class Dog extends Mammal {} class Cat extends Mammal{} public class TestCast { public static void main(String args[]) { Mammal m; Dog d=new Dog(); Cat c=new Cat(); m=d;//不会报错,子类的对象可以赋值给父类的引用 d=m;//会报错,父类的引用不