zoukankan      html  css  js  c++  java
  • java---构造器

    public class SomeTrying{
        
        
        public static void main(String[] args){
            new Son();
            new Son().Father();        
        }
    }
     
     class Father{  
             //父类Father的无参构造函数
            public Father (){  
                System.out.println("Father Construtor");  
            }  
          //父类Father的带参构造函数 ,构造函数不是成员函数,它只代表类本身,所以一个类可以有多个构造函数
            public Father (int x){  
                System.out.println("Father Construtor " + x);  
            }  
             
          /*  父类Father的成员函数,就是类中的普通函数,所以是不可以重复的,如果再写一个如下,
           * 编译器会报 Duplicate method Father() in type Father 错误,原因是两个成员函数发生了冲突。
           public int Father (){  
                System.out.println("Father member function");  
          */
            
            public void Father (){  
                System.out.println("Father member function");  
            }  
        }  
         
         
         //类son是继承父类Father的子类
        class Son extends Father {  
            //在子类的构造函数中调用父类构造函数,
            public Son (){  
                super(1);  
                System.out.println("Son Construtor");  
            }  
           
            //重写父类的成员函数
            public void Father(){  
                System.out.println("Inherited Father member function.");  
                super.Father();  
            }  
        } 

    1、因为类中显式的声明了一个带参数构造器,所以默认的构造器就不存在了,但是你在子类的构造器中并没有显式的调用父类的构造器(创建子类对象的时候,一定会去调用父类的构造器,这个不用问为什么),没有显式调用的话,虚拟机就会默认调用父类的默认构造器,但是此时你的父类的默认构造器已经不存在了,这也就是为什么父类中必须保留默认构造器的原因。

     PS.应该养成良好的编程习惯,任何我们自己定义的类,都显式的加上默认的构造器,以后更深入的学习之后,会发现有很多好处

    方法重写规则

    • 参数列表必须完全与被重写方法的相同;
    • 返回类型必须完全与被重写方法的返回类型相同;
    • 访问权限不能比父类中被重写的方法的访问权限更低。例如:如果父类的一个方法被声明为public,那么在子类中重写该方法就不能声明为protected。
    • 父类的成员方法只能被它的子类重写。
    • 声明为final的方法不能被重写。
    • 声明为static的方法不能被重写,但是能够被再次声明。
    • 子类和父类在同一个包中,那么子类可以重写父类所有方法,除了声明为private和final的方法。
    • 子类和父类不在同一个包中,那么子类只能够重写父类的声明为public和protected的非final方法。
    • 重写的方法能够抛出任何非强制异常,无论被重写的方法是否抛出异常。但是,重写的方法不能抛出新的强制性异常,或者比被重写方法声明的更广泛的强制性异常,反之则可以。
    • 构造方法不能被重写。
    • 如果不能继承一个方法,则不能重写这个方法

    参考:http://www.runoob.com/java/java-override-overload.html

       http://blog.csdn.net/yuxiaohui78/article/details/43887373

       http://www.cnblogs.com/by-dream/p/3967123.html

  • 相关阅读:
    企业IT管理员IE11升级指南【1】—— Internet Explorer 11增强保护模式 (EPM) 介绍
    探讨 : Host在IIS上的WCF Service的执行方式
    JavaScript性能优化
    canvas圆形进度条(逆时针)
    微信二次分享无标题无图片问题参考
    Promise学习
    好用的jq复制插件clipboard.js
    掘金好文链接
    js冒泡排序
    基于JQ的记忆翻牌游戏
  • 原文地址:https://www.cnblogs.com/WXBai/p/6136883.html
Copyright © 2011-2022 走看看