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

    1、源代码

    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);
     }
    }
    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();
     }
    }

    2、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);
     }
    }
    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();
     }
    }

    3、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);
     }
    }
    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();
     }
    }

    4、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);
     }
    }
    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();
     }
    }

    5、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);
     }
    }
    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();
     }
    }

    6、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);
     }
    }
    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();
     }
    }

    7、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);
     }
    }
    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();
     }
    }

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

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

  • 相关阅读:
    (最短路)2017 计蒜之道 复赛 D. 百度地图导航
    13 树的应用-并查集
    12 二叉树-链式存储-二叉排序树(BST)
    11 二叉树-链式存储-先序遍历、中序遍历、后序遍历和层序遍历的非递归算法实现
    10 二叉树-链式存储-递归遍历
    9 线性表-队列-链式存储
    8 线性表-循环队列-顺序存储
    操作系统-页式虚拟存储器管理系统设计
    杂谈:Windows操作系统的介绍与对Win8操作系统市场反响冷淡原因的分析
    一学期积累下来的SQL语句写法的学习
  • 原文地址:https://www.cnblogs.com/lx06/p/13881682.html
Copyright © 2011-2022 走看看