多态是在继承/实现情况下的一种现象,表现为:行为多态,对象多态
public class Teacher extends People {
public String name = "子类的名字";
@Override
public void run() {
System.out.println("老师跑的气喘吁吁!");
}
public void teach(){
System.out.println("老师需要教书!");
}
}
public class Student extends People{
public String name = "子类的名字";
@Override
public void run(){
System.out.println("学生跑的很快!");}
public void test(){
System.out.println("学生需要考试");
}
}
public class People {
public String name ="父类的名字";
public void run(){
System.out.println("人可以跑!");
}
}
1、对象多态(People Student People Teacher)
public class Test {
public static void main(String[] args) {
//目标:认识多态,对象多态,行为多态
//1.对象多态
People p1 = new Teacher();
p1.run();//识别技巧。编译看左边,运行看右边!
People p2 =new Student();
p2.run();
2.行为多态:同一个方法,有不同的表现行式
多态的好处:
1.多态可以实现耦合,右边对象可以随意切换
People p1 = new Teacher();
People p1 = new Student();
2.可以使用父类类型的变量作为形参,可以接受一切子类对象
public class Test {
public static void main(String[] args) {
People p1 = new Teacher();
System.out.println( p1.name);//变量看父类!左边,输出的是父类People的name
public static void go(People p){
}
注意:
多态无法直接调用子类的独有功能,需要进行强制类型转换,例如Student里的test
People p2= new Student
p2.test();//报错
需要:Student p3 = (Student)p2//强制类型转换
p3.test();