标签:define 一起学 resolved 参数类型 stat 位置 自己的 参数 new t
不积跬步,无以至千里;不积小流,无以成江海。
Java语言基础
Java方法详述(重载与重写)
重载的概念:
在同一个类中,允许存在一个以上的的同名方法,只要它们的参数个数或者参数类型不同即可。
重载的特点:
与返回值类型无关,只看参数列表,且参数列表必须不同(访问修饰符和返回值类型可以相同也可以不同)。
示例:
public class Test {
public void test(){
System.out.println("test1");
}
public void test(int a){
System.out.println("test2");
}
//以下两个参数类型顺序不同
public void test(int a,String s){
System.out.println("test3");
}
public void test(String s,int a){
System.out.println("test4");
}
public static void main(String[] args){
Test o = new Test();
o.test();
o.test(1);
o.test(1,"test3");
o.test("test4",1);
}
}
运行结果:
test1 test2 test3 test4
重写的概念:
重写是子类重写父类允许访问的方法。返回值和参数类型必须相同。(存在于子类和父类中)
重写的好处在于子类可以根据需要,定义特定于自己的行为。 也就是说子类能够根据需要实现父类的方法。
示例:
class Animal{
public void move(){
System.out.println("动物可以移动");
}
}
class Dog extends Animal{
public void move(){
System.out.println("狗可以跑和走");
}
}
public class TestDog{
public static void main(String args[]){
Animal a = new Animal(); // Animal 对象
Animal b = new Dog(); // Dog 对象
a.move();// 执行 Animal 类的方法
b.move();//执行 Dog 类的方法
}
}
运行结果:
动物可以移动 狗可以跑和走
注意一个错误:
class Animal{
public void move(){
System.out.println("动物可以移动");
}
}
class Dog extends Animal{
public void move(){
System.out.println("狗可以跑和走");
}
public void bark(){
System.out.println("狗可以吠叫");
}
}
public class TestDog{
public static void main(String args[]){
Animal a = new Animal(); // Animal 对象
Animal b = new Dog(); // Dog 对象
a.move();// 执行 Animal 类的方法
b.move();//执行 Dog 类的方法
b.bark();
}
}
运行结果:
Exception in thread "main" java.lang.Error: Unresolved compilation problem: The method bark() is undefined for the type Animal at TestDog.main(TestDog.java:24)
原因:b的引用类型Animal没有bark方法。
需要这么改:
class Animal{
public void move(){
System.out.println("动物可以移动");
}
}
class Dog extends Animal{
public void move(){
System.out.println("狗可以跑和走");
}
public void bark(){
System.out.println("狗可以吠叫");
}
}
public class TestDog{
public static void main(String args[]){
Animal a = new Animal(); // Animal 对象
Dog b = new Dog(); // Dog 对象
a.move();// 执行 Animal 类的方法
b.move();//执行 Dog 类的方法
b.bark();
}
}
运行结果:
动物可以移动 狗可以跑和走 狗可以吠叫
重载和重写对比:
| 重写 | 重载 | |
| 位置 | 父子类、接口与实现类 | 本类 |
| 方法名称 | 一致 | 一致 |
| 参数列表 | 不能修改 | 必须修改 |
| 返回类型 | 不能修改 | 可以修改 |
| 异常 | 不能扩展 | 可以修改 |
标签:define 一起学 resolved 参数类型 stat 位置 自己的 参数 new t
原文地址:https://www.cnblogs.com/smilexuezi/p/11898663.html