重载
重写和重载的区别:
都是方法的特性。
重载:
同一个类中的多个方法。
方法名相同。
参数列表不同|方法签名不同。
重写:
不同的两个类。
继承关系|实现关系。
方法签名相同(方法名+参数列表)。
场景:在子类继承父类后,继承了一些功能方法,有些功能的实现方式不满意,可以进行功能的重写。
注意:子类在重写父类方法的时候,就是对父类方法进行屏蔽。
class joJo {
public void joJo(){
System.out.println("大乔");
}
public void boWen(){
System.out.println("波纹攻击");
}
}
class joJo2 extends joJo{
@Override
public void joJo() {
System.out.println("二桥"); //重写joJo功能改为二乔
}
@Override
public void boWen(){
System.out.println("波纹攻击");
}
}
class Dio{
public static void main(String[] args) {
joJo2 Ldx=new joJo2();
Ldx.joJo();
}
}
多态
多态:一种事务的多种形态|多种表现形式。
多态的最终体现:
父类的引用指向子类的对象。
多态的前提:
继承|实现。
多态的优点:多态可以让程序变得更加灵活便于后期维护。
多态的使用:
成员变量:编译运行看父类。
成员方法:编译看父类,运行找子类。
当通过父类的引用调用成员方法的时候,如果子类有重写方法就调用重写后的,如果没有找父类。
个人觉得
多态不配合方法的重写,好像就没多大意义。
class JoJo {
String name;
public void joJo(){
System.out.println("大乔");
}
public void bowen(){
System.out.println("波纹疾走");
}
}
class joJo2 extends JoJo{
// @Override
// public void joJo() {
// System.out.println("二桥");
// }
// @Override
// public void bowen(){
// System.out.println("波纹疾走");
// }
}
class joJo3 extends JoJo{
@Override
public void joJo() {
System.out.println("三桥");
}
@Override
public void bowen() {
System.out.println("替身攻击");
}
}
class Dio{
public static void main(String[] args) {
//父类引用子类对象,子类没有重写的方法调用父类自己的方法
JoJo joJo=new joJo2();
joJo.joJo();
joJo.bowen();
//父类引用子类对象,调用子类重写过的方法
JoJo joJo1=new joJo3();
joJo1.joJo();
joJo1.bowen();
}
}
//父类引用子类对象,调用子类重写过的方法
JoJo joJo1=new joJo3();
joJo1.joJo();
joJo1.bowen();
}
}