Java 重写(Override)与重载(Overload)
- Overload 表示重载
- 方式:不同的参数类型,不同的参数个数,不同的参数顺序
- Override 表示重写。
Java 重写
重写是子类对父类的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变
- Java 使用abstract进行重写, 抽象类关键字为 abstract, 子类实现 需用 extends
public abstract class AbstractAnimal
{
public abstract void move();
}
public class Fish extends AbstractAnimal
{
@Override
public void move()
{
System.out.println("我在水里游...");
}
}
注意父类的private 修饰的方法是无法被重写的, 也无法访问
- Java 使用 interface 进行重写, 子类实现用 implements
public interface Animal
{
public void move();
}
public class Bird implements Animal
{
public void move()
{
System.out.println("我在天上飞...");
}
}
- super 的使用
如果子类重写了方法,又想调用父类的方法,就可以使用这个!
public abstract class AbstractAnimal
{
public abstract void move();
}
public class Fish extends AbstractAnimal
{
@Override
public void move()
{
super.move();
System.out.println("我在水里游...");
}
}
Java 重载
重载(overloading) 是在一个类里面,方法名字相同,而参数不同。返回类型可以相同也可以不同。
-
方法重载的优点
- 只需要记住唯一一个方法名称,就可以实现类似的多个功能。
-
方法的重载与下列因素相关:
- 参数个数不同
- 参数类型不同
- 参数的多类型顺序不同
-
方法的重载与下列因素无关:
- 与参数的名称无关
- 与方法的返回值类型无关
public abstract class AbstractAnimal { public abstract void move(); } public class Fish extends AbstractAnimal { @Override public void move() { super.move(); System.out.println("我在水里游..."); } public void move(int direction) { super.move(); System.out.println("我在水里游..."); } }
从上面我们可以看到我们 重载了move,加了 public void move(int direction)
当然构造器也可以通过不同的参数进行重载, 使用方法也是和重载方法一样!