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..在子类中,若要调用父类中被覆盖的方法,可以使用super关键字。

class fu
{
public void A()
{
System.out.println("Parent ");
}
}
class zi extends fu
{
public void A()
{
super.A();
System.out.println("Child ");
}
}
public class Test {
public static void main(String[] args) {
// TODO Auto-generated method stub
zi c = new zi();
c.A();
}
}

结论:

 Java“方法覆盖”的语法规则

(1)覆盖方法的允许访问范围不能小于原方法。

(2)覆盖方法所抛出的异常不能比原方法更多。

(3)声明为final方法不允许覆盖。 例如,Object的getClass()方法不能覆盖。

(4)不能覆盖静态方法。

3.下列语句哪一个将引起编译错误?为什么?哪一个会引起运行时错误?为什么?

m=d;

d=m;

d=(Dog)m;

d=c;

c=(Cat)m;

结论:第二句和第四句会出错

原因:父类不可直接给子类赋值,子类可以直接给父类赋值,同为子类不能相互赋值,父类可强制类型转换给子类赋值

4.运行以下测试代码

(1). 左边的程序运行结果是什么?

(2). 你如何解释会得到这样的输出?

(3). 计算机是不会出错的,之所以得 到这样的运行结果也是有原因的,

那么从这些运行结果中,你能总 结出Java的哪些语法特性?

当子类与父类拥有一样的方法,并且让一个父类变量引用一个子类对象时,到底调用哪个方法,由对象自己的“真实”类型所决定,这就是说:对象是子类型的,它就调用子类型的方法,是父类型的,它就调用父类型的方法。 这个特性实际上就是面向对象“多态”特性的具体表现。

如果子类与父类有相同的字段,则子类中的字段会代替或隐藏父类的字段,子类方法中访问的是子类中的字段(而不是父类中的字段)。如果子类方法确实想访问父类中被隐藏的同名字段,可以用super关键字来访问它。 如果子类被当作父类使用,则通过子类访问的字段是父类的!

Java课程作业之动手动脑(四)的更多相关文章

  1. Java课程作业之动手动脑(六)

    1.使用Files. walkFileTree()找出指定文件夹下所有大于指定大小(比如1M)的文件. import java.io.IOException; import java.nio.file ...

  2. Java课程作业之动手动脑(五)

    1.请阅读并运行AboutException.java示例. import javax.swing.*; class AboutException { public static void main( ...

  3. Java课程作业之动手动脑(三)

    1.以下代码为何无法通过编译?哪儿出错了? 在Foo类中已经有了一个Foo的含参构造方法,所以在定义Foo类对象时不能使用new Foo()方法.在Foo类中再写一个无参构造方法,就能编译了. 如果类 ...

  4. Java课程作业之动手动脑(二)

    纯随机数发生器 编写一个方法,使用以下算法生成指定数目(比如1000个)的随机整数. import java.util.Scanner; public class test { public stat ...

  5. java课堂作业3 动手动脑

    第一题 测试一下代码查看输出结果 public class InitializeBlockDemo { /** * @param args */ public static void main(Str ...

  6. JAVA方法03之动手动脑问题解决

    动手动脑1.当JAVA里定义的函数中去掉static后,怎么办?(如下程序,将square()函数的static去掉) public class SquareIntTest { public stat ...

  7. Java类和对象动手动脑

    动手动脑1 以下代码为何无法通过编译?哪儿出错了?

  8. Java文件与类动手动脑

    动手动脑1: 使用Files. walkFileTree()找出指定文件夹下所有大于指定大小(比如1M)的文件. package classJava; import java.io.IOExcepti ...

  9. Java第一节课动手动脑

    在第一节课的动手动脑中,主要解决四则运算问题. 首先第一个是出30道四则运算题目,在100以内.这个问题需要控制随机数生成的范围和结果的范围在100以内就可以. 第一次改进是3点:一为避免重复,二为定 ...

随机推荐

  1. 线程event事件函数实现红绿灯

    #!/usr/bin/env python # -*- coding: utf-8 -*- # author aliex-hrg import threading,time event = threa ...

  2. KMP(字符串匹配)算法

    unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms ...

  3. py2exe 打包的两种方式

    cmd模式 #!/usr/bin/python #-*- coding: UTF-8 -*- from distutils.core import setup import py2exe setup( ...

  4. Modbus RTU 协议使用汇总

    原创地址:https://blog.csdn.net/u012166958/article/details/64920144 标准的Modbus 口是使用RS-232C 兼容串行接口,它定义了连接口的 ...

  5. [视频播放] M3U8文件格式说明

    M3U文件中可以包含多个tag,每个tag的功能和属性如下: #EXTM3U 每个M3U文件第一行必须是这个tag,请标示作用 #EXT-X-MEDIA-SEQUENCE:140651513 每一个m ...

  6. 无需AutoCAD,用C#生成DWG文件

    是一个类库:Teigha.NET for .DWG 利用它就可以在无需安装AutoCAD软件的情况下,生成.读取DWG文件,适合那些导入导出的场合. Teigha曾用名OpenDWG .DWGdire ...

  7. 【Json】Jackson将json转换成泛型List

    Jackson将json转换成泛型List 获取泛型类型 /** * 获取泛型类型 * * @return */ protected Class<T> getGenericsType() ...

  8. Hadoop 管理工具HUE配置-filebrowser配置

    Hue提供了图形化截面管理HDFS数据,可谓之非常方便,但是在配置上,还是有点麻烦的. 1 /home/hadoop/software/cloud/hue/desktop/conf/pseudo-di ...

  9. 高CPU排查方法分享

    1 软件性能较差,占用CPU较多,往往是由于某段代码逻辑算法不佳导致,那如何在数以千计的函数中找到问题函数呢?2 在使用!runaway命令比较不同时间各线程占用CPU时间,找到CPU时间增涨较多的线 ...

  10. C#、AE开发入门之打开shp文件并显示

    首先要建立好对应的对话框程序,并拖入axMapControl控件和axLisence控件,并设置一个按钮打开该文件 当然在使用前一定要绑定对应的ArcGis产品 static void Main() ...