在Java中有两种形式可以实现多态:继承和接口。
2. 继承和接口
(1). 基于继承实现的多态
基于继承的实现机制主要表现在父类和继承该父类的一个或多个子类对某些方法的重写,多个子类对同一方法的重写可以表现出不同的行为。
基于继承实现的多态可以总结如下:对于引用子类的父类类型,在处理该引用时,它适用于继承该父类的所有子类,子类对象的不同,对方法的实现也就不同,执行相同动作产生的行为也就不同。
如果父类是抽象类,那么子类必须要实现父类中所有的抽象方法,这样该父类所有的子类一定存在统一的对外接口,但其内部的具体实现可以各异。这样我们就可以使用顶层类提供的统一接口来处理该层次的方法。
(2).基于接口实现的多态
继承是通过重写父类的同一方法的几个不同子类来体现的,那么就可能是通过实现接口并覆盖接口中同一方法的几不同的类体现的。
在接口的多态中,指向接口的引用必须是指定实现了该接口的一个类的实例程序,在运行时,根据对象引用的实际类型来执行对应的方法。
继承都是单继承,只能为一组相关的类提供一致的服务接口。但是接口可以是多继承多实现,它能够利用一组相关或者不相关的接口进行组合与扩充,能够对外提供一致的服务接口。所以它相对于继承来说有更好的灵活性。
三、多态的存在条件
1、有继承
2、要有重写
3、父类的引用指向子类的对象:自动向上转型
四、多态中的访问特点
1.成员变量的调用
编译的时候看左边 运行的时候也看左边
2.指向子类的父类引用只能访问父类中拥有的方法和属性
3.若子类重写了父类中的某些方法,在调用这些方法的时候,必定是使用子 类中定义的方法
4.对于子类中存在而父类不存在的方法,该引用是不能使用的
结论:实例字段、静态字段、静态方法在编译期间就实行了静态绑定,而实例方法则实行的是动态绑定。
五、多态评价
1.好处和作用:
多态的存在提高了程序的扩展性和后期可维护性。
2.弊端:
父类调用的时候只能调用父类中的方法,不能调用子类的特有方法,因为父类并不清楚将来会有什么样的子类继承。
六.多态练习
package zhou;
public class Father {
static int a=66;//静态字段
int b=99;//实例字段
public void c() {//实例方法
System.out.println(“c=96”);
}
public static void d(){//实例方法
System.out.println(“d=100”);
}
}
package zhou;
public class Son extends Father{
static int a=88;//静态字段
int b=69;//实例字段
int e=51;//实例字段
public void c() {//实例方法
System.out.println(“c=56”);
}
public static void d(){//实例方法
System.out.println(“d=60”);
}
public void f() {//实例方法
System.out.println(“f=89”);
}
}
package zhou;
public class Test1 {
public static void main(String[] args) {
Father f=new Son();//向上转型
System.out.println(“a=”+f.a+" b="+f.b);
f.c();//动态绑定
f.d();//静态绑定
Son s=new Son();
s.f();//直接调用son里面的f,也可以输出输出son里面的实例字段e;
}
}
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数同学面临毕业设计项目选题时,很多人都会感到无从下手,尤其是对于计算机专业的学生来说,选择一个合适的题目尤为重要。因为毕业设计不仅是我们在大学四年学习的一个总结,更是展示自己能力的重要机会。
因此收集整理了一份《2024年计算机毕业设计项目大全》,初衷也很简单,就是希望能够帮助提高效率,同时减轻大家的负担。
既有Java、Web、PHP、也有C、小程序、Python等项目供你选择,真正体系化!
由于项目比较多,这里只是将部分目录截图出来,每个节点里面都包含素材文档、项目源码、讲解视频
如果你觉得这些内容对你有帮助,可以添加VX:vip1024c (备注项目大全获取)
目源码、讲解视频**
如果你觉得这些内容对你有帮助,可以添加VX:vip1024c (备注项目大全获取)
[外链图片转存中…(img-iFHuBlnY-1712523099199)]