一、函数重载:
是指在同一个类中,允许存在一个以上的同名方法,只要它们的参数个数或者参数类型不同即可。
注:
与返回值类型无关,只看方法名和参数列表
在调用时,虚拟机通过参数列表的不同来区分同名方法
class ChongZhai //重载案例
{
public static void main(String[] args)
{
//通过不同的参数调用sum方法
int sum1=sum(10,11);//两个参数。整型
int sum4=sum(1,2,3);//三个参数
float sum2=sum(1.0F,43.0F);//两个参数 float
double sum3=sum(234.1,22.1);//两个参数double型
System.out.println(sum1);
System.out.println(sum2);
System.out.println(sum3);
System.out.println(sum4);
}
//sum方法重载
public static int sum(int a,int b)
{
return a+b;
}
public static int sum(int a,int b,int c)
{
return a+b+c;
}
public static float sum(float a,float b)
{
return a+b;
}
public static double sum(double a,double b)
{
return a+b;
}
}
二、方法重写
子类中出现了和父类中一模一样的方法声明,也被称为方法覆盖,方法复写。
使用特点:
如果方法名不同,就调用对应的方法
如果方法名相同,最终使用的是子类自己的
class AnimalTest
{
public static void main(String[] args)
{
//创建猫类对象
Cat c=new Cat();
c.name="小毛球";
c.age=3;
c.leg=4;
System.out.println("我家的猫咪"+c.getName()+"今年"+c.getAge()+"岁了"+"有"+c.getLeg()+"条腿");
c.eat();//调用猫类自己的方法
c.maiMeng();
System.out.println("----------------------");
//创建狗类对象
Dog d=new Dog();
d.name="大黄";
d.age=4;
d.leg=4;
System.out.println(d.getName()+"今年"+d.getAge()+"岁了"+"有"+d.getLeg()+"条腿");
d.fanEr();
d.eat();//调用的是狗类自己的方法
}
}
class Animal
{
String name;
int age;
int leg;
Animal(){}
Animal(String name,int age,int leg)
{
this.name=name;
this.age=age;
this.leg=leg;
}
//成员方法get/set
public void setName(String name)
{
this.name=name;
}
public String getName()
{
return name;
}
public void setAge(int age)
{
this.age=age;
}
public int getAge()
{
return age;
}
public void setLeg(int leg)
{
this.leg=leg;
}
public int getLeg()
{
return leg;
}
//特有方法
public void eat()
{
System.out.println("喜欢吃美味的东西!");
}
public void sleep()
{
System.out.println("喜欢睡觉!");
}
}
class Cat extends Animal{
Cat(){}
public void maiMeng()
{
System.out.println("喵星人会卖萌!");
}
public void eat()
{
System.out.println("猫喜欢吃鱼!");
}
}
class Dog extends Animal{
Dog(){}
public void fanEr()
{
System.out.println("狗靠犯二生活!");
}
public void eat()
{
System.out.println("狗喜欢吃骨头!");
}
}
|
|