zoukankan      html  css  js  c++  java
  • ppt动手动脑4

    1.

     父类:

    public class Father {
        public void showOut()
        {
            System.out.println("这是父类方法!");
        }
    }

    子类:

    public class Son extends Father{
        public void showOut()
        {
            super.showOut();
            System.out.println("这是子类的方法!");
        }
    }
        public static void main(String[] args) {
            Son son=new Son();
            son.showOut();
        }

    运行结果:

     由此可见子类可以覆盖父类的方法,但是要求子类的方法和父类的方法一模一样,要不会变成重载。

    在子类中可以通过super调用父类的方法或成员变量,但是不能重载final方法和静态方法。

    2.

     测试代码:

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

    运行结果:

     由此可见子类在调用构造方法时会先调用父类的构造方法。

    作如下修改观察输出:

    class Parent extends Grandparent
    {
    
    
        public Parent()
         {
    
                //super("Hello.Grandparent.");
    
                System.out.println("Parent Created");
        
           // super("Hello.Grandparent.");
    
          }
    
    }

     在作如下修改:

     发现报错了,可见通过super调用构造方法必须是子类构造方法的第一句。

    3.

     这里main方法实际调用了public void println(objiect x)

    这一方法内部调用了String的valueOf()方法,valueOf()方法又调用了

    Object.toString()方法:

    public String toString() {
            return getClass().getName() + "@" + Integer.toHexString(hashCode());
        }

    所以输出了一堆奇怪的运行结果。

    4.

     运行结果:

     在对象与String类型进行+运算时会调用对象的toString()方法,由于重写了toString()方法所以的到的是这样的结果。

    5.

     

    由上图可以看到子类的对象可以赋值给父类对象,子类对象之间不可以相互赋值。

    虽然父类对象可以强制转化为子类对象并赋值给子类对象,没有报错,但是运行时会报错。

  • 相关阅读:
    Linux 进程间通信(一)(经典IPC:消息队列、信号量、共享存储)
    Linux 进程间通信(一)(经典IPC:管道、FIFO)
    Linux I/O 进阶
    Linux 信号
    Linux 进程(二):进程关系及其守护进程
    转载:什么是B+树?
    转载:什么是B树?
    Redis批量删除脚本
    Java时间工具类
    JSP2.2自定义标签、EL函数
  • 原文地址:https://www.cnblogs.com/fengchuiguobanxia/p/13853212.html
Copyright © 2011-2022 走看看