一、Java中的重载
多的不说先来个例子:
类:长方形.java
{int 长,int 宽 }
类:正方形.java
{ int 边长 }
类:形状.java
{ zhouchang(长方形) int
zhouchang(正方形) int}
public class Rectangular {
/**
* 长
*/
public int length =5;
/**
* 宽
*/
public int width = 10;
public Rectangular(){
}
}
public class Square {
/**
* 边长
*/
public int length = 5;
public Square(){
}
}
public class Shape {
static Rectangular rectangular = new Rectangular();
static Square square = new Square();
/**
* 长方形的周长
* @param rectangular
* @return
*/
static int zhouchang(Rectangular rectangular){
int len=0;
len = (rectangular.length+rectangular.width)*2;
return len;
}
/**
* 正方形的周长
* @param square
* @return
*/
static int zhouchang(Square square){
int len=0;
len = square.length*4;
return len;
}
public static void main(String[] args) {
System.out.println("长方形的周长为"+zhouchang(rectangular));
System.out.println("正方形的周长为"+zhouchang(square));
}
}
很显然重载就是在同一个类当中有多个名称相同方法,但各个相同方法的参数列表不同(包括返回值类型)
二、java中的重写
还是来一个例子:
public class Animal {
protected void say(){
System.out.println("animal say");
}
public static class Cat extends Animal{
protected void say(){
System.out.println("cat say");
}
}
public static class Dog extends Animal{
protected void say(){
System.out.println("dog say");
}
}
public static void main(String[] args) {
Animal animal = new Animal();
Cat cat = new Cat();
Dog dog = new Dog();
animal.say();
cat.say();
dog.say();
}
}
可见,重写是子类不能满足父类的方法,子类重写为自己需要的,重写时方法参数必须与父类完全一样
所以重载与重写的区别就是:重载是在同一个类中,且参数不同。重写是子类对父类的方法进行重写,方法参数必须完全一样