zoukankan      html  css  js  c++  java
  • 动手动脑 总结

    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 TestInherits {
        public static void main(String args[])
         {
    
               Child c = new Child();
         }      
    }
    

      结论:通过super调用基类构造方法,必须是子类构造方法中的第一个语句。子类的构造方法在运行之前,必须调用父类的构造方法。因为子类必须继承父类的变量和方法。如果不先给父类中的变量赋值,则子类中从父类继承的变量没有赋值。所以不能反过来先给子类赋值。

    2.在子类中,若要调用父类中被覆盖的方法,可以使用super关键字。

    class fu
    {
        public void A()
         {
                System.out.println("Parent ");
              }
    }
    class zi extends fu
    {
        public void A()
         {
            super.A();
            System.out.println("Child ");
          }
    }
    public class Test {
        public static void main(String[] args) {
            // TODO Auto-generated method stub
                        zi c = new zi();
                        c.A();
        }
    }
    

      

    结论:

     Java“方法覆盖”的语法规则

    (1)覆盖方法的允许访问范围不能小于原方法。

    (2)覆盖方法所抛出的异常不能比原方法更多。

    (3)声明为final方法不允许覆盖。 例如,Object的getClass()方法不能覆盖。

    (4)不能覆盖静态方法。

    3.下列语句哪一个将引起编译错误?为什么?哪一个会引起运行时错误?为什么?

     原因:父类不可直接给子类赋值,子类可以直接给父类赋值,同为子类不能相互赋值,父类可强制类型转换给子类赋值

    4.运行测试代码

    (1)左边的程序运行结果是什么?

    (2)你如何解释会得到这样的输出?

    (3)计算机是不会出错的,之所以得 到这样的运行结果也是有原因的,

    那么从这些运行结果中,你能总 结出Java的哪些语法特性?

    当子类与父类拥有一样的方法,并且让一个父类变量引用一个子类对象时,到底调用哪个方法,由对象自己的“真实”类型所决定,

    这就是说:对象是子类型的,它就调用子类型的方法,是父类型的,它就调用父类型的方法。 这个特性实际上就是面向对象“多态”特性的具体表现。

    如果子类与父类有相同的字段,则子类中的字段会代替或隐藏父类的字段,子类方法中访问的是子类中的字段(而不是父类中的字段)。

    如果子类方法确实想访问父类中被隐藏的同名字段,可以用super关键字来访问它。 如果子类被当作父类使用,则通过子类访问的字段是父类的!

  • 相关阅读:
    the process cannot access the file because it is being used by another process
    SharePoint 2013: The "New Web Application" button is disabled is the central administration
    【转】Windows按键消息—虚拟键码
    【转】windows消息16进制对应表
    C#将图片字节流转为Base64直接放入html的img标签src属性中
    WPF自定义Main函数
    c#geckofx文件流下载
    腾讯RTX登录提示失败问题及处理办法
    C# \u8888类型的unicode转换为字符串方法
    C#System.Net.Mail采用简单邮件传输协议发送邮件
  • 原文地址:https://www.cnblogs.com/yongyuandishen/p/13890856.html
Copyright © 2011-2022 走看看