• java继承示例


    package day07;
    class Fu
    {
      int num = 5;    
    }
    class Zi extends Fu
    {
          int num =7;
          void show()
          {
              int num =9;
              System.out.println(num);
              
          }
    }
    public class Extends {
         public static void main(String[] args) {
            Zi zi = new Zi();
            zi.show();
        }
    
    }

    9//自己有就不去找
    package day07;
    class Fu
    {
      int num = 5;    
    }
    class Zi extends Fu
    {
          int num =7;
          void show()
          {
              int num =9;
              System.out.println(this.num);
              
          }
    }
    public class Extends {
         public static void main(String[] args) {
            Zi zi = new Zi();
            zi.show();
        }
    
    }

    7

     
    package day07;
    class Fu
    {
      int num = 5;    
    }
    class Zi extends Fu
    {
          int num =7;
          void show()
          {
              int num =9;
              System.out.println(super.num);
              
          }
    }
    public class Extends {
         public static void main(String[] args) {
            Zi zi = new Zi();
            zi.show();
        }
    
    }

    5

     

    super代表的是父类,this代表的是本类对象的引用,super代表父类所属空间

    注意:子类父类中通常不会出现同名属性,父类中既然已经定义了num属性,子类就没有必要定义该属性

    子类无法覆父类中的show方法,因为类型不一样

    package day07;
    class Fu
    {
    public static void show()
      {
          
          System.out.println("run show1");
      }
    public void show2()
    {
        System.out.println("haha1");    
    }
    }
    class Zi extends Fu
    {
       
      public static void  show()
          {
              
              System.out.println("run show2");
              
          }
      public void show2()
      {
          System.out.println("haha2");
          
      }
    }
    public class Extends {
         public static void main(String[] args) {
            Fu f = new Zi();//注意这个地方对象的创建,以及结果,静态方法以及成员变量和普通方法的区别
            f.show();
            f.show2();
        }
    
    }

    run show1
    haha2



    对比:

    package day07;
    class Fu
    {
    public static void show()
      {
          
          System.out.println("run show1");
      }
    public void show2()
    {
        System.out.println("haha1");    
    }
    }
    class Zi extends Fu
    {
       
      public static void  show()
          {
              
              System.out.println("run show2");
              
          }
      public void show2()
      {
          System.out.println("haha2");
          
      }
    }
    public class Extends {
         public static void main(String[] args) {
            Zi z = new Zi();//注意这个地方对象的创建,以及结果,静态方法以及成员变量和普通方法的区别
            z.show();
            z.show2();
        }
    
    }

    run show2
    haha2

     

    覆盖的时候注意:

        1、子类覆盖父类的时候保证覆盖方法的权限大于等于被覆盖函数的权限

        2、覆盖方法有静态修士的时候,静态只能覆盖静态,或者被静态覆盖

        

  • 相关阅读:
    减少.NET应用程序内存占用的一则实践
    ASP.NET中检测图片真实否防范病毒上传
    PHP、Python 相关正则函数实例
    利用脚本将java回归到面向函数式编程
    ASP.Net 实现伪静态方法及意义
    ExecuteNonQuery()方法
    在.net中使用split方法!
    str.split()如何用?谢谢
    输出货币型
    (DataRowView)e.Item.DataItem只有在ItemDataBound这个事件中起效
  • 原文地址:https://www.cnblogs.com/mmlovejj/p/5062746.html
Copyright © 2020-2023  润新知