当前位置: 首页 > wzjs >正文

做化工的外贸网站都有什么百度关键词分析

做化工的外贸网站都有什么,百度关键词分析,做logo网站的公司,html代码加密Java多态详解 什么是多态? 比如我们说:“驾驶一辆车”,有人开的是自行车,有人开的是摩托车,有人开的是汽车。虽然我们都说“开车”,但“怎么开”是由具体的车类型决定的:“开”是统一的动作&a…

Java多态详解

什么是多态?

比如我们说:“驾驶一辆车”,有人开的是自行车,有人开的是摩托车,有人开的是汽车。虽然我们都说“开车”,但“怎么开”是由具体的车类型决定的:“开”是统一的动作,具体的行为因车不同而不同。这就是生活中的“多态”现象,同一行为,通过不同的事物,可以体现出来的不同的形态。多态描述的就是这样的状态。

多态分为编译时多态和运行时多态。方法重载(overload)实现的是编译时多态(静态多态),而方法重写(override)实现的是运行时多态(动态多态)。

面向对象编程的三大核心特性:封装、继承、多态(这里指的是运行时多态),多态允许同一操作作用于不同对象时产生不同行为。Java中多态的实现依赖于继承、方法重写和向上转型,是代码灵活性和扩展性的关键机制。

多态的核心实现机制

  • 父类引用指向子类对象(向上转型):用父类类型的变量引用子类对象。
  • 方法重写:子类对父类中的方法进行重新定义,保持方法签名相同。
  • 动态绑定:JVM根据对象的实际类型(而非引用类型)决定调用哪个方法。
class Animal {void sound() { System.out.println("动物叫声"); }
}class Dog extends Animal {@Overridevoid sound() { System.out.println("汪汪"); }
}class Cat extends Animal {@Overridevoid sound() { System.out.println("喵喵"); }
}public class Test {public static void main(String[] args) {Animal a1 = new Dog(); // 向上转型Animal a2 = new Cat();a1.sound(); // 输出"汪汪"a2.sound(); // 输出"喵喵"}
}

我们之所以能在运行时调用子类方法,是因为 Java 支持动态绑定

什么是绑定?

绑定指的是一个方法的调用与**方法所在的类(方法主体)**关联起来。对java来说,绑定分为静态绑定(早绑定、编译时绑定)与动态绑定(晚绑定、运行时绑定)。

静态绑定

  • 定义:在编译阶段确定方法调用与具体实现的对应关系。
  • 绑定依据:变量声明类型(编译时类型)。
  • 典型场景:方法重载、private / static / final 方法调用。

动态绑定

  • 定义:在程序运行期间确定方法调用与具体实现的对应关系。
  • 绑定依据:对象实际类型(运行时类型)。
  • 典型场景:父类引用指向子类对象 + 方法重写。

多态的使用场景

方法参数多态性

将父类类型作为方法参数,可以接受任意子类对象:

void makeSound(Animal animal) {animal.sound();
}// 调用
makeSound(new Dog()); // 输出"汪汪"
makeSound(new Cat()); // 输出"喵喵"

集合中的多态

使用接口或父类类型声明集合,存储不同子类对象:

List<String> list = new ArrayList<>(); // 多态的应用
Set<Integer> set = new HashSet<>();

多态的注意事项

方法调用的限制

  • 通过父类引用只能调用父类中声明的方法。
  • 若需调用子类特有方法,必须向下转型。

向上转型与向下转型

  • 向上转型:子类 → 父类(包括接口实现类 → 接口),自动完成,无需显式转换。
  • 向下转型:父类 → 子类(包括接口 → 实现类),需显式转换,存在ClassCastException风险(必须先用instanceof检查)。

静态方法无多态性

静态方法属于类,调用时由引用类型决定,而非实际对象类型:

class Parent {static void method() { System.out.println("Parent"); }
}
class Child extends Parent {static void method() { System.out.println("Child"); }
}Parent p = new Child();
p.method(); // 输出"Parent"(无多态性)

成员变量的访问

成员变量无多态性,访问时由引用类型决定:

class Parent { int value = 10; }
class Child extends Parent { int value = 20; }Parent p = new Child();
System.out.println(p.value); // 输出10

多态的好处

  • 代码扩展性:新增子类无需修改原有代码(符合开闭原则)。
  • 降低耦合度:调用方法依赖父类接口,而非具体子类。
  • 统一化处理对象:通过父类引用统一管理多种子类对象(如集合遍历)。
  • 支持设计模式:如工厂模式、策略模式、模板方法模式等均依赖多态实现。

多态访问规则总结

口诀

“成员变量,静态方法看左边;非静态方法:编译看左边,运行看右边。”

原理:成员变量和静态方法无多态性非静态方法编译阶段检查父类是否有该方法(确保语法正确),运行阶段根据对象实际类型(子类)调用方法(动态绑定)。

http://www.dtcms.com/wzjs/411170.html

相关文章:

  • 天津站设计单位营销是什么
  • 郑州专业网站制作服务报价企业网络宣传推广方案
  • 建个企业网站需要多少钱seo是搜索引擎优化吗
  • 数字媒体应用 网站开发广州seo外包
  • 网页游戏传奇霸业攻略南昌seo排名公司
  • 安阳县属于哪个省哪个市win10一键优化工具
  • 权威的广州h5网站网络营销服务商
  • 金堂做网站的公司百度热搜榜历史
  • 网站换新域名电商平台排名
  • 青岛模板建站代理免费seo关键词优化排名
  • 网站专业销售团队介绍营销渠道策略有哪些
  • 西宁中小企业网站建设网站查询关键词排名软件
  • 邹平做网站苹果要做搜索引擎
  • 长沙网站优化厂家网站seo推广哪家值得信赖
  • 常见的电子商务网站网址郑州网站推广方案
  • 南昌做网站开发的公司有哪些服装品牌策划方案
  • 比较好的做网站公司合肥今日头条新闻
  • 谁有人和兽做的网站?凡科建站的免费使用
  • 网站在淘宝上做靠谱吗免费网站电视剧全免费
  • 体育新闻最新消息今天网络推广和信息流优化一样么
  • 天津建设工程信息网专家库官网合肥网络推广优化公司
  • wordpress用户上传太原seo关键词排名
  • 做金融的免费发帖的网站有哪些网络推广怎么做效果好
  • java调接口做网站徐州seo排名收费
  • 免费 成品模板网站四川seo多少钱
  • 西安商城类网站制作南京seo网站管理
  • 施工企业负责人每月带班时间不少于牛排seo
  • 网站有信心做的更好上海市人大常委会
  • 英文网站建设需求seo需要懂代码吗
  • 用meteor框架做的微博网站上首页的seo关键词优化