zoukankan      html  css  js  c++  java
  • 动手动脑3

    一、继承条件下的构造方法调用

    运行 TestInherits.java 示例,发现通过调用子类,最后运行时基类的构造方法也调用了。

    将grandparents中修改通过调用子类来调用显示另一个构造函数,得将其修改为 public grandparents().

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

    从构造函数的作用上想,子类继承父类,父类继承他的父类,故在调用子类的构造方法之前,子类得找寻到父类的构造方法,父类找到他的父类。

    二、神奇的“+”号

    运行Fruit.java实例,发现结果为f=Fruit toString.一个字串和一个对象“相加”。

    结论: 在“+”运算中,当任何一个对象与一个String对象,连接时,会隐式地调用其toString()方法,默认情况下,此方法返回“类名 @ + hashCode”。为了返回有意义的信息,子类可以重写toString()方法。

    三、方法覆盖(override)”的要点

    请自行编写代码测试以下特性(动手动脑):

    package TEST;

    public class JCC {
    public static void main(String[] args)
    {
    monkey m=new monkey();
    m.eat();
    m.feat();
    }
    }
    class animal
    {
    void eat()
    {
    System.out.println("吃饭。");
    }
    }
    class monkey extends animal
    {
    void eat()
    {
    System.out.println("吃香蕉。");
    }
    void feat()
    {
    super.eat();
    }
    }

    子类方法eat()覆盖了父类中方法eat(),在子类中用super调用父类中的eat()。

    四、类型转换

    Mammal m=null ; Dog d=new Dog(); Cat c=new Cat();

    m=d; d=m; d=(Dog)m; d=c; c=(Cat)m;

    d=m,d=c   出现编译错误。

    五、在实践中理解把握复杂的知识

    运行ParentChildTest.java示例,显示结果为:

    Parent.printValue(),myValue=100
    Child.printValue(),myValue=200
    Child.printValue(),myValue=200
    Child.printValue(),myValue=200
    Child.printValue(),myValue=201

    第一个和第二个结果没有异议,第三个结果是子类赋值给父类,然后父类的myvalue++对子类输出结果没有影响仍为200,最后对父类进行强制转换为子类,子类中的myvalue++,影响结果为201。

    六、为什么使用多态?

    简单的说多态就是实现使用同样的方法做不同的事情,这个情况在现实广泛存在,比如使用彩色打印机可以打印出彩色图像,使用单色打印机只能打印出单色的东西。而计算机程序就是为了解决现实的问题而存在的,它要能将现实中出现的问题还原到计算机中并加工处理。多态是继承/方法覆盖/方法重载的结合,有了多态,程序可以实现动态绑定。

  • 相关阅读:
    Mysql 之 编码问题
    Mysql Basic
    CentOS 之 Sublime text3 安装
    mapper映射
    端口号占用
    2020系统综合实验 第7次实践作业
    2020系统综合实验 第6次实践作业
    解决github打开速度慢问题
    2020系统综合实践 第5次实践作业
    2020系统综合实验 第4次实践作业
  • 原文地址:https://www.cnblogs.com/jccjcc/p/9890475.html
Copyright © 2011-2022 走看看