博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java课后思考问题(七)
阅读量:4919 次
发布时间:2019-06-11

本文共 1862 字,大约阅读时间需要 6 分钟。

1.继承条件下的构造方法调用

package parent;

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.类型转换

下列语句哪一个将引起编译错误?为什么?哪一个会引起运行时错误?为什么? m=d; d=m; d=(Dog)m; d=c; c=(Cat)m; 先进行自我判断,得出结论后,运行TestCast.java实例代码,看看你的判断是否正确。

        d=m,d=c运行时将会报错。因为m是父类对象,d是子类对象。将父类对象转化成子类对象,必须进行强制转换。而d和c是两个互不相干的类对象,所以不能将d赋值给c.

3.子类父类拥有同名的方法

1. 左边的程序运行结果是什么? 2. 你如何解释会得到这样的输出? 3. 计算机是不会出错的,之所以得 到这样的运行结果也是有原因的, 那么从这些运行结果中,你能总 结出Java的哪些语法特性?

 

public class ParentChildTest {

public static void main(String[] args) {
Parent parent=new Parent();
parent.printValue();
Child child=new Child();
child.printValue();
parent=child;
parent.printValue();
parent.myValue++;
parent.printValue();
((Child)parent).myValue++;
parent.printValue();
}
}

class Parent{

public int myValue=100;
public void printValue() {
System.out.println("Parent.printValue(),myValue="+myValue);
}
}
class Child extends Parent{
public int myValue=200;
public void printValue() {
System.out.println("Child.printValue(),myValue="+myValue);
}
}

 

 

结论:

(1)子类对象可以赋值给父类的对象。父类进行子类强制转换可以赋值给子类的对象。

(2)子类能覆盖父类,但是父类中的变量的值是不改变的,访问父类中的变量时可用super来访问,反之则一直被子类覆盖。父类被覆盖时,对父类中的变量进行操作时,父类中的变量改变,但输出时仍输出覆盖父类的子类的变量。

(3)(child)Parent.myValue++,这时改变的将是覆盖父类的子类。

 

转载于:https://www.cnblogs.com/wl2017/p/7809978.html

你可能感兴趣的文章
把JavaScript对象转化成JSON对象
查看>>
redis数据丢失及解决
查看>>
glusterFS分布式存储部署流程
查看>>
数据链路层工作原理
查看>>
win 10 hosts文件不生效
查看>>
Hadoop.之.入门部署
查看>>
【HTML5 localStorage本地储存】简介&基本语法
查看>>
总有一项适合你:联想 Miix2 8寸版触摸屏失灵的各项解决方案
查看>>
ie8实现无刷新文件上传
查看>>
Struts2 Action扩展名的三种修改方法
查看>>
8.7.2 类的继承和方法的覆盖
查看>>
Block的定义和使用
查看>>
一片技术文章的诞生
查看>>
量子计算可以给企业竞争带来的七种优势
查看>>
【树莓派】使用VNC远程登录树莓派的图形界面
查看>>
键盘点出来就退不掉了,你可以把这几句加到有键盘的控制器里
查看>>
SQL server用到的SQL语句备份下
查看>>
使用匿名类型做为ComboBox的DataSource
查看>>
java中的一些规则(菜鸟的课堂笔记)
查看>>
Oracle Tuning思路
查看>>