Java面向对象之多态,接口

方法重写

一般记住以下的重写规则

方法名相同,参数列表相同,返回值类型相同或者是其子类,访问权限比父类宽,异常不比父类多

满足以上的条件即构成了方法重写

为什么要用方法重写?

子类具有自己个性个性化的内容,例如父类有一个动物叫的方法,但是每个动物的叫声是不一样的,而且动物也没有明确的叫声,因此,通常把父类里动物叫的这个方法定义为抽象方法,即不需要方法体有抽象方法的类需要被定义为抽象类,因此父类常常是抽象类,抽象类中也可以有被实现的方法  使用方法重载是利用动态绑定机制实现多态

Animal dog=new Dog()              方法  编译看左边,执行看右边

                                                         变量  编译看左边  执行看左边

dog.shot()  会调用狗类中被重写的方法

多态

多态:同一个引用类型,使用不同的实例而执行不同操作

系统的扩展性和维护性好,添加新功能,不修改原有的代码

写代码需要注意:对修改封闭,对拓展开放

对修改封闭指不能修改,对拓展开放指的是能拓展,  利用多态来实现

 主人类中cure的方法形参是Pet类型的  因此在测试类中用Pet pet=new Dog(),形式上是Pet类型,实际实例化的是Dog类型的,因此在调用cure方法时执行的还是Dog类中的cure方法

这样做的好处是如果新增一个猪类继承Pet,主人类中不需要再为猪新增一个cure的重写方法

抽象类和抽象方法

用abstract修饰的类和方法  有抽象方法的类一定是抽象类,但是抽象类中不一定有抽象方法

抽象方法的特点:没有代码块  public abstract void shout();之所以定义为抽象类就是这个方法每个子类都有其个性化的内容,所以这个方法想要是想要子类去将其重写

抽象类的特点 抽象类不能被实例化   即不能被new

单例模式

只能创建一个对象

懒汉模式

User要设置成静态私有因为我们只要创建一个User  所以想到static在内存中只有一个拷贝,getUser也要设置成静态的,原因是在测试类中我们没有对象去调用这个get方法,因此我们只能通过类名来访问

饿汉模式 

饿汉模式是在第一步的时候直接new一个user对象,并用static来修饰    第三步的时候就不需要判断条件了

在测试类中每次get都是return这个对象

使用static修饰的原因是让其变为静态属性,在加载类的时候就能new出一个对象

工厂模式

快速生成对象

 这种方法当有新对象则要重新修改代码

工厂方法模式

 

 

 一个宠物一个宠物工厂的类,宠物工厂将接口的get方法实现,宠物类中只要投对应的宠物工厂类就能获得对应的宠物

这种写法为了如果新增宠物类时就不需要对原代码进行修改,只需要新增两个类就行

接口


接口:一种公共的规范标准,行为的抽象
关键字  Interface    类用implem实现接口
接口中的方法默认是  public abstract
接口无法被实例化即  new 接口   需要通过实现类对其实例  接口 成员变量=new 实现对象
接口多态

接口中的成员变量默认被static final修饰  只能是静态常量  int num=3;  无法再进行修改,能通过接口名直接访问
接口没有构造方法
接口中的普通方法是抽象的   如果要实现需要用default修饰

接口代表一种功能,规范,标准

一个类只能继承一个直接父类,但是可以实现多个接口,理解为java多继承

接口的语法规定:

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值