重载和重写

本文详细介绍了面向对象编程中的重载和重写概念。重载发生在同一类中,方法名相同但参数列表不同,而重写则在子类中对父类方法进行修改。此外,文章还探讨了多态性,强调多态主要涉及方法的多态,并解释了动态绑定。最后,以简单工厂模式为例,展示了如何在实际编程中应用这些概念。

在这里插入图片描述
重载是同一个类中,方法名字相同, 但是形参的类型,个数,顺序不同, 不要求返回值类型相同,方法名只和形参列表有关,与修饰符无关在这里插入图片描述
在这里插入图片描述

重写是在不同类中,子类对父类提供的方法不满意,对父类的方法进行重写。要求两个方法名字相同, 同时参数的类型和个数,顺序,返回值类型相同,但是返回值如果为协变类型,就是父类与子类也可以的

重写举例

class Shape{
    public void draw(){
    }
}

class Flower extends Shape{
    @Override
    public void draw() {
        System.out.println("hua");
    }
}

class square extends Shape{
    @Override
    public void draw() {
        System.out.println("zheng");
    }
}

public class Test {
public static void drawmap(Shape shape){
    shape.draw();
}

    public static void main(String[] args) {
         drawmap(new Flower());
        Shape shape1=new square();
        shape1.draw();
    }
    }

在这里插入图片描述
super修饰属性和方法
在这里插入图片描述

在这里插入图片描述
super修饰构造器
在这里插入图片描述

super调用父类的属性
在这里插入图片描述
super调用父类方法
父类:
在这里插入图片描述
子类:
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
多态:
多态跟属性无关,多态指的是方法的多态,而不是属性的多态。

在这里插入图片描述

涉及到动态绑定:
通过父类的引用,调用父类和子类的同名覆盖方法和向上转型:父类引用指向子类对象

Pig p = new Pig ( ) ;
Animal an = p;

//将上面的代码合为一句话:
Animal an = new Pig();
//=左侧:编译期的类型
//=右侧:运行期的类型

Pig p=new Pig();
Animal an = p;//转型:向上转型
//将Animal转为Piq类型:
Pig pig =(Pig)an ;//转型:向下转型

不仅可以使用父类做方法的形参,还可以使用父类做方法的返回值类型,真实返回的对象可以是该类的任意一个子类对象。
简单工厂模式的实现,它是解决大量对象创建问题的一个解决方案。将创建和使用分开,工厂负责创建,使用者直接调用即可。简单工厂模式的基本要求是:
定义一个static方法,通过类名直接调用
返回值类型是父类类型,返回的可以是其任意子类类型
传入一个字符串类型的参数,工厂根据参数创建对应的子类产品

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值