Java中函数的重载和重写
2017-01-17 17:59
323 查看
重载
重载指的是两个或者两个以上同名函数,但它们的参数不一样,这时会出现函数重载的情况。比如下面这段代码class Test{ public void a(){ System.out.println("正常"); } public void a(String t){ System.out.println("第二个a" + t); } } class app{ public static void main(String[] args){ Test test = new Test(); test.a("啊"); // 函数被重载 test.a(); // 未被重载 } } ------Output------ 第二个a啊 正常
也就是它具体使用那个函数,是根据你的参数来决定的。
重写
通俗讲就是覆盖,在Java好像对同一个类中,不支持重写,下面这段代码,运行就报错了。class Test{ public void a(){ System.out.println(0); } public void a(){ System.out.println(1); } } class app{ public static void main(String[] args){ Test test = new Test(); test.a(); } } ------Output------ app.java:5: ??: ??? Test?????? a() public void a(){ ^ 1 ???
一般来说,也没人会这么写,使用重写,基本上是在继承中,比如下面这段代码。
class Test{ public void a(){ System.out.println(0); } } class Test2 extends Test{ public void a(){ System.out.println(1); } } class app{ public static void main(String[] args){ Test2 test = new Test2(); test.a(); } } ------Output------ 1
Test2重写了Test中的a方法,不过在Java中,如果你想要重写某个方法,需要遵守几个规则,重写的函数返回类型需要和父类中返回的类型相同,形参相同,访问权限不能比父类中的小,比如下面这个就有问题
class Test{ public int a(){ return 0; } } class Test2 extends Test{ private int a(){ return 1; } } class app{ public static void main(String[] args){ Test2 test = new Test2(); test.a(); } } 报错
这段代码之所以报错是因为,Test2的方法a比父类的a权限小,但反过是可以的。
完。
相关文章推荐
- C++和Java在 子类继承父类时,两者成员函数重写和重载的特性
- 黑马程序员_Java函数的重载与重写(覆盖)
- 黑马程序员_java入门_函数,重载,重写
- JAVA - 函数重载和重写
- java 函数的重载和重写实例代码
- java函数重载和函数重写
- C++和Java在 子类继承父类时,两者成员函数重写和重载的特性
- JAVA - 函数重载和重写
- 黑马程序员—java学习心得之函数的重载和重写
- java函数重载和函数重写
- JAVA - 函数重载和重写
- JAVA面试题解惑系列(九)——继承、多态、重载和重写
- Java中继承、多态、重载和重写
- java中重载和覆盖(又称重写)的区别
- JAVA——继承、多态、重载和重写
- JAVA面试题解惑系列(九)——继承、多态、重载和重写
- C++函数重定义、重载、重写
- Java中重载(overload)和重写(override)的区别
- JAVA面试题解惑系列(九)——继承、多态、重载和重写
- Java中重载和重写的区别