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. google浏览器查看源码快捷键 ctrl+U

    google浏览器查看源码快捷键 ctrl+U 或则在地址栏的网址前加上:view-source:

  2. Cygwin使用2-心得

    引用:http://www.jb51.net/article/6236.htm 1.在cygwin里访问Windows盘 cd /cygdrive/c cd c: 2.整合cygwin命令到Windo ...

  3. laravel5.5 excel的安装和使用

    在项目开发中 最常用的就是把数据导出成excel的文件报表了 然而新下的项目中啥也没有;没有excel的扩展 会报这个错误 然后你需要通过composer安装这个依赖 学习源头:https://www ...

  4. 黄聪:wordpress教程

    又一个作品完成!<跟黄聪学Wordpress主题开发>,国内最好的Wordpress主题模版开发视频教程!! 目录预览: WordPress官方源文件层式结构讲解 WordPress数据库 ...

  5. PHP 如何自定义函数

    PHP 如何自定义函数 使用Function来自定义一个函数:格式如下:function function_name( $data ){ /** * 函数操作 */}注意:函数命名和自定义变量一样.只 ...

  6. spring 基本配置学习

    1.bean的方式说明 作用:    用于配置对象让spring来创建的. 默认情况下它调用的是类中的无参构造函数.如果没有无参构造函数则不能创建成功. 属性: id:给对象在容器中提供一个唯一标识. ...

  7. 【mysql】索引优化记录

    基础知识 Innodb存储引擎 支持行锁 支持事务: Myisam存储引擎 只支持表锁: 不支持事务: 常见索引列表 独立的列 前缀索引(索引选择性) 多列索引(并不是多个单列索引,索引顺序很重要) ...

  8. hadoop 完全分布式安装

    一个完全的hadoop分布式安装至少需要3个zookeeper,3个journalnode,3个datanode,2个namenode组成. 也就是说需要11个节点,但是我云主机有限,只有3个,所以把 ...

  9. 使用Softmax回归将神经网络输出转成概率分布

    神经网络解决多分类问题最常用的方法是设置n个输出节点,其中n为类别的个数.对于每一个样例,神经网络可以得到一个n维数组作为输出结果.数组中的每一个维度(也就是每一个输出节点)对应一个类别,通过前向传播 ...

  10. centos6.5网络虚拟化技术

    一.配置KVM虚拟机NAT网络 1.创建脚本执行权限 下面是NAT启动脚本 # vi /etc/qemu-ifup-NAT 赋予权限 # chmod +x /etc/qemu-ifup-NAT 下载镜 ...