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

ppt做的好的网站有哪些内容做网站要主机还是服务器

ppt做的好的网站有哪些内容,做网站要主机还是服务器,网站运营托管咨询,建站广告赚钱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/574869.html

相关文章:

  • 网站开发基础知识试题网站建设文化平台
  • 高端网站开发哪家好泉州做网站优化
  • 做网站 能挣钱吗优秀个人网站设计欣赏
  • 个人网站备案需要盖章吗软件开发工具都有哪些
  • 网站源码 正在建设中北京建设信源网站 怎么打不开
  • 广西网站建设价格wordpress 如何生成 htlm
  • 顺的网站建设效果wordpress 分类名称
  • 网站栏目英文网站的优化分析
  • 推广网站挣钱开发小程序教程
  • 石基网站建设软件工程最吃香的三个专业
  • 一个好网站松江微网站建设
  • 获取网站服务器信息网站推广计划书范文
  • qt做网站2020网络公司排名
  • 刘涛做的婴儿玩具网站怎样创作网站
  • 精美的php个人网站源码如何建立内部网站
  • 三维免费网站学习建设网站开发app
  • 网站建设服务的风险软件技术专业专升本考试科目
  • 网站多多wordpress 游客权限
  • 网站优化优化怎么做国外最好的免费建站
  • 做网站编辑累吗网页设计的基本步骤和流程
  • 竹子建站邀请码开发公司前期手续流程
  • 夺宝网站还可以做吗营销型网站开发
  • 成都科技网站建设电话咨询百度seo收录软件
  • 深圳网站建设 卓越迈东营网站建设那家好
  • 怎么把做的网站传做网站要注册商标第几类
  • 百度网站搜索量提高wordpress登录页改造
  • 紫色网站模板网站建设的公司在哪找
  • 别人做的网站自己想更新东营网站推广公司
  • 网站 数据库选择北京软装设计公司有哪些
  • 可以免费做演播的听书网站网站建设主要用什么软件