多态
在同一个方法中,由于参数类型的不同从而导致执行效果各异的现象就是多态。
1.多态现实意义理解:
现实事物经常会体现出多种形态,如学生,学生是人的一种,则一个具体的同学张三既是学生也是人,即出现两种形态。
Java作为面向对象的语言,同样可以描述一个事物的多种形态。如Student类继承了Person类,一个Student的对象便既是Student,又是Person。
2.多态体现为父类引用变量可以指向子类对象。
定义格式:父类类型 变量名=new 子类类型();
Parent p=new Child();//父类的对象p指向子类
4.前提条件:必须有子父类关系(extend或者implement)。
注意:在使用多态后的父类引用变量调用方法时,可以直接用父类对象调用子类重写后的方法。
但是未重写的方法,需要使用类型转换从而调用此方法
People p1=new Student();
p1.eat();//直接调用子类重写后的方法
Student s1=(Student)p1;//子类新定义的方法study()需要对父类型进行转换为子类型从而调用子类自定义的方法
s1.study();
//或者更简便写
((Student)p1).study();
5.多态中成员的特点
调用多态的成员变量(取到父中的值):编译运行看左边
Fu f=new Zi();
System.out.println(f.num);//f是Fu中的值,只能取到父中的值
2.多态成员方法(调用的是重写后的方法):编译看左边,运行看右边
Fu f1=new Zi();
System.out.println(f1.show());//f1的类型是Fu,但实际类型是Zi,所以调用的是重写后的方法。
重载
java允许一个程序中定义多个名称相同的方法,但是参数类型或个数必须不同
方法的重载和返回值类型无关,他只需要满足两个条件:
1)方法名相同
2)参数个数或参数类型不同
public class E12 {
public int add(int x,int y){
return x+y;
}
public int add(int x,int y,int z){//参数个数不同
return x+y+z;
}
public double add(double x,double y){//参数类型不同
return x+y;
}
}