zoukankan      html  css  js  c++  java
  • Java 重载与重写

    重写

    重写(Overwriting)是子类对父类的函数进行重新定义。

    • 方法名、返回值类型、参数列必须保持一致(java7 及更高版本:返回类型与被重写方法的返回类型可以不相同,但是必须是父类返回值的派生类)
    • 访问权限:重写的方法访问权限必须大于等于父类方法。例如:如果父类的一个方法被声明为 public,那么在子类中重写该方法就不能声明为 protected。也就是子类中的方法不能做更严格的限制。
    • 异常:重写的方法抛出的检查异常不能大于父类方法,可以抛出任何非检查异常
    • 声明为final 跟 static的方法不能被重写
    • 构造方法不能被重写
    • 子类和父类在同一个包中,那么子类可以重写父类所有方法,除了声明为 private 和 final 的方法。子类和父类不在同一个包中,那么子类只能够重写父类的声明为 public 和 protected 的非 final 方法。

    子类中调用父类被重写方法时,可以使用super关键字。

    public class OverRiddingTest {
        public static void main(String[] args) {
            Animal a = new Animal();
            Human h = new Human();
            a.move();
            h.move();
            h.play();
            Animal ah = new Human();
            //ah.play();父类申明变量指向子类实例,该父类变量不能调用父类不存在的变量和方法,否则会编译错误
        }
    }
    
    class Animal{
        public void move(){
            System.out.println("动物可以移动");
        }
    }
    
    class Human extends Animal{
        public void move(){
            super.move();
            System.out.println("人是动物,可以双脚直立行走");
        }
        
        public void play(){
            System.out.println("人会种花");
        }
    }
    View Code

    重载

    重载(Overloading)是让类以统一的方式处理不同类型数据的一种手段。

    • 在一个类里面,方法名字相同,而参数(类型、个数)不同
    • 返回类型可以相同也可以不同
    • 可以有不同的访问修饰符
    • 可以抛出不同的异常
    • 多态性:调用时,通过传递的参数的个数、类型来决定使用哪个方法
    public class OverLoadingTest {
        public static void main(String[] args) {
            Dog g = new Dog();
            g.bark("hahahahah");
            g.bark(3);
        }
    }
    
    class Dog{
        public void bark(){
            System.out.println("狗吠");
        }
        
        public void bark(int i){
            System.out.println("狗吠了"+i+"声");
        }
        
        public void bark(String s){
            System.out.println(s);
        }
    }
    View Code

    构造方法不能被重写,可以被重载。

  • 相关阅读:
    XE8下安装IntraWeb 14.0.40和D7下安装IntraWeb 11.0.63破解版的正确方法
    网易博客打不开怎么办
    SQL SERVER 导入EXCEL的存储过程
    TMemoryStream、String与OleVariant互转
    【转载】Delphi Idhttp的get和post方法
    sqlserver得到行号
    Delphi 中的 XMLDocument 类详解(5)
    10款免费且开源的项目管理工具
    iOS开发者必备:九大设计类工具
    15个步骤创立技术公司,并收获千万用户(完结)
  • 原文地址:https://www.cnblogs.com/jszfy/p/12795489.html
Copyright © 2011-2022 走看看