关键词:
---恢复内容开始---
1.动手实验:继承条件下的构造方法调用
class Grandparent public Grandparent() System.out.println("GrandParent Created."); public Grandparent(String string) System.out.println("GrandParent Created.String:" + string); class Parent extends Grandparent public Parent() //super("Hello.Grandparent."); System.out.println("Parent Created"); // super("Hello.Grandparent."); class Child extends Parent public Child() System.out.println("Child Created"); public class TestInherits public static void main(String args[]) Child c = new Child();
结果
结论:是第一个语句
通过 super 调用基类构造方法,必须是子类构造方法中的第一个语句。
2
为什么子类的构造方法在运行之前,必须调用父类的构造方法?能不能反过来?为什么不能反过来?
答:构造一个对象,先调用其构造方法,来初始化其成员函数和成员变量。子类拥有父的成员变量和成员方法,如果不调用,则从父类继承而来的成员变量和成员方法得不到正确的初始化。
3.
参看ExplorationJDKSource.java示例 此示例中定义了一个类A,它没有任何成员: class A
package z; public class ExplorationJDKSource /** * @param args */ public static void main(String[] args) System.out.println(new A()); class A
使用javap –c命令反汇编ExplorationJDKSource.class 得:
结论:
main方法实际是调用了String类的valueOf()方法而valueOf方法内部又调用Object.toString方法:public String toString()return getClass().getName()+”@”+Integer.toHexString(hashCode());
hashCode方法是本地方法,由JVM设计者实现:public native int hashCode()。
4.
请自行编写代码测试以下特性(动手动脑): 在子类中,若要调用父类中被覆盖的方法,可以使用super关键字
package z; class person public person() System.out.println("A"); class me extends person public me() super(); System.out.println("B"); class you extends person public you() super(); System.out.println("C"); public class test public static void main(String[] args) // TODO Auto-generated method stub me me = new me();
(1)覆盖方法的允许访问范围不能小于原方法。
(2)覆盖方法所抛出的异常不能比原方法更多。
(3)声明为final方法不允许覆盖。 例如,Object的getClass()方法不能覆盖。
(4)不能覆盖静态方法。
动手动脑2
1.编写一个方法,使用以上算法生成指定数目(比如1000个)的随机整数。importjavax.swing.JOptionPane;publicclasssuiji publicstaticvoidmain(Stringargs[]) intvalue; Stringoutput=""; for(inti=1;i<=1000;i++) value=1+(int)(Math.rando 查看详情
课程3动手动脑.
...ueMultiplier=75=16807C=0当显示过2^31-2个数之后,才可能重复。动手动脑:编写一个方法,使用以上算法生成指定数目(比如1000个)的随机整数。packagedemo;//RandomInt.java//Shifted,scaledrandominte 查看详情
动手动脑2(代码片段)
1.//作者:冯晨//日期2018.10.15packagesuijishushengcheng;publicclassHpublicstaticvoidmain(String[]args)for(intj=0;j<1000;j++)inti=(int)(Math.random()*100000);System.out.println(i);2.重载在同一类中进行,同名却不同用。 查看详情
动手动脑
一.【类型转换】 —>无精度损失--à有精度损失Byte1字节 -2的7次方到2的7次方-1short2字节 -2的15次方到2的15次方-1int4字节 -2的31次方到2的31次方-1long8字节 -2的63次方到2的63次方-1float4字节 &... 查看详情
第三讲动手动脑-2(代码片段)
publicclassFruitpublicStringtoString()return"FruittoString.";publicstaticvoidmain(Stringargs[])Fruitf=newFruit();System.out.println("f="+f);//System.out.println("f="+f.toString());结果:f=FruittoSt 查看详情
动手动脑2
1.编写一个方法,使用以上算法生成指定数目(比如1000个)的随机整数a.利用产生随机数的公式X(n+1)=(aXn+c)modm计算出所需要的随机数,利用for循环产生每二十个一行的随机数b.源代码packagesuijshu10001;publicclassTest{publiclongx=123456L;pu... 查看详情
实验2及动手动脑(代码片段)
importjava.util.Scanner;publicclassSushupublicstaticvoidmain(String[]args)intflag=0;int[]a=newint[100];Scannersc=newScanner(System.in);System.out.println("请输入第一个数字");intx=Integer.parseInt(sc.nextLin 查看详情
动手动脑,无法自拔
1.动手动脑 如果类提供了一个自定义的构造方法,将导致系统不再提供默认构造方法。而foo类中有一个publicfoo(intinitValue)类,导致系统不能引用默认的构造函数。2.动手动脑 实例:TextStaticInitialalizeBlock.java: classRoot{s... 查看详情
方法的动手动脑
动手动脑:(1)纯随机数发生器Modulus=231-1=int.MaxValueMultiplier=75=16807C=0当显示过231-2个数之后,才可能重复。动手动脑:编写一个方法,使用以上算法生成指定数目(比如1000个)的随机整数。代码如下:package suijishu; public&... 查看详情
动手动脑2
首先,如果做的听的递归的题目多了之后,就会发现,递归要满足两个条件:一是,要有使递归进行下去的变量,在这里就是row和col(行和列);二是,要有终止递归的条件,在这里就是当row和col相等或者col==1的时候。递归在经典... 查看详情
2动手动脑问题及实验性问题
1、编写一个方法,使用算法生成指定数目(比如1000个)的随机整数 importjava.util.Scanner; importjava.util.Random; publicclassRandomInt {/***@paramargs*/ publicstaticvoidmain(String[]args) { //TODOAuto-generatedmethodstub 查看详情
java第三章动手动脑
动手动脑1.(1)intvalue=100;(2)MyClassobj=newMyClass();这两种定义方式一样吗?答:定义方式相同,其中(1)是(2)的简化写法。2.结果为false,原因:比较对象是否相同时,比较的是对象指向的内存地址,如果要比较对象是否相同... 查看详情
课堂动手动脑
动手动脑1.当在捕获到异常的处理代码里加入system.exit()时,finally的代码块是不会执行的。 2.Catchwho结果: & 查看详情
java-02-动手动脑
1.设计思想:利用随机数产生公式,递归调用,输出一定数量的随机数。2.源代码:importjava.util.Scanner;publicclassSuiji_2{publicstaticvoidmain(String[]args){//TODOAuto-generatedmethodstubScannerin=newScanner(System.in);System.out.println("产 查看详情
动手动脑2
1.纯随机数生成方法:我们可以用math.random来生成随机数,但是通过这种方法生成的随机数会出现重复,因此它生成的随机数称为伪随机数。为了避免发生重复,可以运用种子和random类共同生成随机数,这种方法通过对种子的不... 查看详情
动手动脑(课堂作业02)
1,生成随机数(数学公式)publicclassSuiji{privatestaticfinalintN=200;privatestaticfinalintLEFT=40;privatestaticfinalintRIGHT=1000;privatestaticlongx0=1L;privatelonga=1103515245L;privatelongc=12345L;privatelongm=2 查看详情
覆盖动手动脑(代码片段)
package代码测试2;publicclassoverridepublicstaticvoidmain(Stringargs[])sonc=newson();c.emm();classparentspublicvoidemm()System.out.println("吴林祥");classsonextendsparentspublicvoidemm()super.emm(); 查看详情
动手动脑02
1请看以下代码,你发现了有什么特殊之处吗?原因:上述示例代码展示了Java的“方法重载(overload)”特性。满足以下条件的两个或多个方法构成“重载”关系:(1)方法名相同;(2)参数类型不同,参数个数不同,或者是参... 查看详情