• 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

  • 相关阅读:
    C++ 递归读取目录下所有文件
    C++ XML文件解析
    常用数据结构之栈
    常用数据结构之队列
    通过shell快速配置J2EE运行环境
    docker:(5)利用docker -v 和 Publish over SSH插件实现war包自动部署到docker
    docker:(4)利用WebHook实现持续集成
    docker:(3)docker容器挂载宿主主机目录
    docker:(2)通过Dockerfile构建镜像并发布web项目
    docker:(1)docker基本命令使用及发布镜像
  • 原文地址:https://www.cnblogs.com/WXBai/p/6136883.html
Copyright © 2020-2023  润新知