java多态覆盖_JAVA基础之重载,覆盖/重写,多态

重载发生在同一个类中

特点是两同一不同,类相同,方法名相同,参数不同。其他项与重载无关。

在调用方法的时候,会根据方法名的不同判断具体调用哪个方法。

创建一个Driver类,类中实现了对driver方法的重载操作。

public classDriver {//实现了重载操作

public voiddrive(){

System.out.println("No Parameter");

}public voiddrive(String driver){

System.out.println("One Parameter "+driver);

}

}

测试重载操作

public classTest {public static voidmain(String[] args){

Driver driver= newDriver();

driver.drive();

driver.drive("Jason");

}

}

重写/覆盖

重写和覆盖发生在父类和子类之间,特点是“两同两小一大”,即方法名相同,参数相同,子类返回值类型小或相等,子类抛出异常小或相等,子类方法的访问权限大或相等。

违反这一原则的话,编译会报错。

public classPerson {public int a = 10;public voidA(){

System.out.println("Person A");

}

}

public class Teacher extendsPerson{public int a = 20;public voidA(){

System.out.println("Teacher A");

}

}

public classTest {public static voidmain(String[] args){

Person person= newPerson();

Teacher teacher= newTeacher();

System.out.println("Person A "+person.a);

System.out.println("Teacher A "+teacher.a);

person.A();

teacher.A();

}

}

Person中的变量a和方法A都被其子类覆盖

多态

产生于基类和子类之间

有编译类型和运行类型之分

只有方法有多态,属性没有多态

public classPerson {public int a = 10;public voidA(){

System.out.println("Person A");

}

}

public class Teacher extendsPerson{public int a = 20;public voidA(){

System.out.println("Teacher A");

}

}

public classTest {public static voidmain(String[] args){

Person person= newPerson();

Teacher teacher= newTeacher();

Person p= newTeacher();

System.out.println("Person A "+person.a);

System.out.println("Teacher A "+teacher.a);

person.A();

teacher.A();

p.A();

System.out.println("Person Teacher A "+p.a);

}

}

运行结果:

Person A 10

Teacher A 20

Person A

Teacher A

Teacher A

Person Teacher A 10

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值