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  test1
{
    public static void main(String args[])
  {
         Child c = new Child();
 
  }
}
 
运行结果
 
GrandParent Created.
Parent Created
Child Created
 
结论

2、思索

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

构造方法是用来初始化变量的,子类继承了父类的变量,如果不调用父类构造方法,则有些变量未初始化。

若先调用子类构造方法,父类里并没有子类的变量,会导致出错

3、

class A{

}

public class part1{

public static void main(String[] args){

System.out.println(new A());

}

}

运行结果为:

exercise.A@15db9742

初始化时调用了object类中的构造方法,返回输出该对象的哈希值,并用16进制表示。

4、

class Father
{
 public void show()
 {
  System.out.println("父类");
 }
}
class Son extends Father
{
 public void show()
 {
  super.show();
  System.out.println("子类");
 }
}
public class test2
{
 public static void main(String[] args)
 {
  Son s=new Son();
  s.show();
 }
}

结果:
父类

子类

5、

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.   你如何解释会得到这样的输出?

3.   计算机是不会出错的,之所以得到这样的运行结果也是有原因的,那么从这些运行结果中,你能总结出Java的哪些语法特性?

结果

当把子类对象赋给父类对象后,父类对象调用的方法全是子类中的方法,此时parent.myValue++所改变的数值只是父类中myValue的值,所以结果仍是子类中myValue的数值200,而((Child)parent).myValue++改变的则是子类中myValue的值,所以输出201。

java继承与多态课后作业的更多相关文章

  1. Java 继承和多态

                                                        Java  继承和多态 Java 继承 继承的概念 继承是java面向对象编程技术的一块基石,因 ...

  2. JAVA第三周课后作业

    JAVA课后作业 一.枚举类型 代码: enum Size{SMALL,MEDIUM,LARGE}; public cl ass EnumTest { public static void main( ...

  3. Java继承和多态实例

    我们知道面向对象的三大特性是封装.继承和多态.然而我们有时候总是搞不清楚这些概念.下面对这些概念进行整理, 为以后面向抽象的编程打下坚实的基础. 封装的概念还是很容易理解的.如果你会定义类,那么相信你 ...

  4. Java继承与多态

    感慨一下,到了现在感觉Java里面很多东西都是模模糊糊,不能这样了,一点点解决吧.今天看了继承与多态的一些内容,感觉看得很浅,先写下来,算是巩固,如果后面看到更好的内容,再慢慢加上去. 继承与多态,他 ...

  5. Java 继承、多态与类的复用

    摘要: 本文结合Java的类的复用对面向对象两大特征继承和多态进行了全面的介绍. 首先,我们介绍了继承的实质和意义,并探讨了继承,组合和代理在类的复用方面的异同.紧接着,我们依据继承引入了多态.介绍了 ...

  6. Java继承,多态,组合应用

    继承:  面向对象的三大特征之一:    是类和类之间的一种拓展关系,是一种从一般到特殊的关系;    格式: sub   extends Super,  我们把sub称为子类或者拓展类, 把supe ...

  7. java继承和多态

    父类和子类 如果类C1扩展自另一个类C2,那么C1称为子类或派生类,C2称为父类或基类.派生类可以从它的基类中继承可访问的数据域和方法,还可添加新数据域和新方法 例如:实现一个几何图形基类; clas ...

  8. 四. Java继承和多态8.Java final关键字:阻止继承和多态

    在 Java 中,声明类.变量和方法时,可使用关键字 final 来修饰.final 所修饰的数据具有“终态”的特征,表示“最终的”意思.具体规定如下: final 修饰的类不能被继承. final ...

  9. 四. Java继承和多态4. 多态和动态绑定

    在Java中,父类的变量可以引用父类的实例,也可以引用子类的实例. 请读者先看一段代码: public class Demo { public static void main(String[] ar ...

随机推荐

  1. 软考复习之UML设计篇

    UML统一建模语言 构件图:描述系统的物理结构,它可以用来显示程序代码如何分解成模块 部署图:描述系统中硬件和软件的物理结构,它描述构成系统架构的软件构件,处理器和设备 用例图:描述系统与外部系统及用 ...

  2. mongo shell

    mongo shell mongo 连接 本地 mongo # 连接127.0.0.1:27017 远程 mongo "mongodb://mongodb0.example.com:2801 ...

  3. 纪中9日T4 2298. 异或

    2298. 异或 (File IO): input:gcdxor.in output:gcdxor.out 时间限制: 1000 ms  空间限制: 262144 KB  具体限制 题目描述 Sarv ...

  4. Codeforces Round #599 (Div. 2) D. 0-1 MST(bfs+set)

    Codeforces Round #599 (Div. 2) D. 0-1 MST Description Ujan has a lot of useless stuff in his drawers ...

  5. mybatis中用到的9种设计模式

    1.Builder模式:例如SqlSessionFactoryBuilder.XMLConfigBuilder.XMLMapperBuilder.XMLStatementBuilder.CacheBu ...

  6. private、public、this关键字

    private关键字 概念:私有的,一种权限修饰符,用来修饰类的成员 特点:被修饰的成员只能在本类中访问 用法: - 1. private 数据类型 变量名: - 2. private 返回值类型 方 ...

  7. 吴裕雄--天生自然 HADOOP大数据分布式处理:安装XShell

    下载安装包

  8. 双向链表的简单Java实现-sunziren

    写在前面,csdn的那篇同名博客就是我写的,我把它现在在这边重新发布,因为我实在不想用csdn了,那边的广告太多了,还有就是那个恶心人的“阅读更多”按钮,惹不起我躲得起. 在上次分享完单向链表的简单编 ...

  9. mysql数据库环境配置及部分问题

    亲身经历了MySQL初学者的痛苦,把主要问题和解决方法整理一下. 一.解压版环境配置 1.把压缩包解压到某盘符下. 解压后在类似“E:\mysql-5.7.22-winx64”这个文件夹中可以看到以上 ...

  10. .net 基础汇总(1)

    1  转载 String.IsNullOrWhiteSpace和String.IsNullOrEmpty的区别