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

服装设计网上海牛巨微seo

服装设计网,上海牛巨微seo,王爷不要,公司建立网站费用下是使用Java语言重新实现的面向对象多态性示例,包含详细注释和关键特性说明: 一、动态多态性(运行时多态) 示例:动物叫声 java // 基类 abstract class Animal {// 抽象方法(Java中的纯虚函数&#xf…

下是使用Java语言重新实现的面向对象多态性示例,包含详细注释和关键特性说明:

一、动态多态性(运行时多态)

示例:动物叫声

java

// 基类
abstract class Animal {// 抽象方法(Java中的纯虚函数)public abstract void speak();
}// 派生类1
class Dog extends Animal {@Overridepublic void speak() {System.out.println("Dog barks: Woof!");}
}// 派生类2
class Cat extends Animal {@Overridepublic void speak() {System.out.println("Cat meows: Meow~");}
}public class DynamicPolymorphismDemo {public static void main(String[] args) {Animal[] animals = new Animal[2];animals[0] = new Dog();animals[1] = new Cat();for (Animal animal : animals) {animal.speak(); // 动态绑定:实际调用子类方法}}
}

输出结果:​

markdown

Dog barks: Woof!
Cat meows: Meow~

核心机制:​

  1. abstract关键字定义抽象类
  2. @Override注解确保方法重写
  3. 父类引用指向子类对象时的动态绑定
  4. Java通过 invokevirtual指令实现运行时多态

应用场景:​

  • 图形界面事件处理(如按钮点击不同响应)
  • 游戏角色行为扩展
  • 数据库操作工厂模式

二、静态多态性(编译时多态)

示例:图形面积计算

java

public class StaticPolymorphismDemo {// 方法重载(静态多态)public static double area(int radius) {return Math.PI * radius * radius;}public static double area(double length, double width) {return length * width;}public static void main(String[] args) {System.out.println("Circle area: " + area(5));      // 调用第一个areaSystem.out.println("Rectangle area: " + area(4, 6)); // 调用第二个area}
}

输出结果:​

markdown

Circle area: 78.5398...
Rectangle area: 24.0

核心机制:​

  • 同名方法但参数列表不同
  • 编译器根据调用时的参数类型进行绑定
  • 不需要继承关系

三、抽象类与接口扩展

示例:形状面积计算

java

// 抽象类
abstract class Shape {public abstract double area(); // 纯抽象方法
}class Circle extends Shape {private double radius;public Circle(double radius) {this.radius = radius;}@Overridepublic double area() {return Math.PI * radius * radius;}
}class Rectangle extends Shape {private double length;private double width;public Rectangle(double length, double width) {this.length = length;this.width = width;}@Overridepublic double area() {return length * width;}
}public class AbstractClassDemo {public static void main(String[] args) {Shape[] shapes = new Shape[2];shapes[0] = new Circle(5);shapes[1] = new Rectangle(4, 6);double totalArea = 0;for (Shape shape : shapes) {totalArea += shape.area(); // 多态调用}System.out.println("Total area: " + totalArea);}
}

输出结果:​

markdown

Total area: 102.5398...

四、接口实现多态

示例:绘图工具

java

// 接口
interface DrawingTool {void draw();
}// 实现类1
class Pencil implements DrawingTool {@Overridepublic void draw() {System.out.println("Drawing with pencil");}
}// 实现类2
class Brush implements DrawingTool {@Overridepublic void draw() {System.out.println("Painting with brush");}
}public class InterfaceDemo {public static void main(String[] args) {DrawingTool[] tools = new DrawingTool[2];tools[0] = new Pencil();tools[1] = new Brush();for (DrawingTool tool : tools) {tool.draw(); // 接口多态}}
}

输出结果:​

markdown

Drawing with pencil
Painting with brush

五、多态性对比表

特性Java实现方式C++对应实现关键差异
动态多态接口/抽象类 + 方法重写虚函数Java使用 invokevirtual,C++使用虚表
静态多态方法重载函数重载参数类型匹配规则略有不同
抽象类abstract关键字抽象类Java不能多继承抽象类
接口interface关键字纯虚类Java支持多实现接口
构造方法多态不支持构造函数重载Java没有构造函数重载机制

六、重要特性说明

  1. 方法重写(Override)​

    java

    @Override
    public <T> void process(T data) { ... }

    必须保持方法签名一致(参数类型、顺序、数量)

  2. 隐藏方法(Hide)​

    java

    public class Parent {public void foo() { System.out.println("Parent"); }
    }public class Child extends Parent {public void foo() { System.out.println("Child"); } // 隐藏父类方法
    }
  3. 协变返回类型

    java

    public abstract class Animal {public abstract Animal getChild();
    }public class Dog extends Animal {@Overridepublic Dog getChild() { return new Dog(); }
    }
  4. 类型转换

    java

    Animal animal = new Dog();
    Dog dog = (Dog) animal; // 向下转型

七、使用场景建议

  1. 优先使用接口

    java

    public interface Logger {void log(String message);
    }
    • 接口适合定义多个不相关的实现
    • 支持多继承(implements多个接口)
  2. 抽象类适用场景

    java

    public abstract class Vehicle {protected String brand;public abstract void startEngine();
    }
    • 当需要共享部分实现时
    • Java 8之后可以用default方法提供默认实现

八、性能优化建议

  1. 避免过度使用反射

    java

    // 反射会降低性能
    Method method = clazz.getDeclaredMethod("execute");
    method.invoke(object);
  2. 合理使用多态

    java

    // 频繁的对象创建和GC
    for(int i=0; i<10000; i++) {new Animal().speak();
    }
  3. 使用final关键字

    java

    public final void criticalMethod() { ... }
    • 防止方法被重写
    • 可能带来JIT编译优化

这些Java示例完整展示了面向对象多态性的核心概念,同时体现了Java语言特性(如接口、抽象类、注解等)。通过合理运用多态性,可以设计出高内聚、低耦合的软件系统,符合面向对象设计原则(OODP)。

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

相关文章:

  • 会网站建设好吗北京官网优化公司
  • 做网站_接活张家界seo
  • 网站建设 推广信息快速建网站
  • 惠州惠阳网站建设线上推广如何引流
  • 如何做p2p网站私人做网站
  • 徐州手机网站建设公司济南新闻头条最新事件
  • 做网站赚钱的QQ群成功的品牌推广案例分析
  • 优秀企业网站设计欣赏站长工具端口检测
  • 专业营销的网站建设公司排名域名大全
  • 板绘线下培训班seo的优化方向
  • 利用腾讯云建设网站石家庄网站建设案例
  • 企业网站建设公司哪家好指数函数求导公式
  • 洛阳网络运营公司seo的基本步骤顺序正确的是
  • 广州番禺服装网站建设海外域名
  • 太原网站建企业官网
  • 丰台青岛网站建设seo排名需要多少钱
  • 成都找人做网站常用的五种网络营销工具
  • wordpress自带的会员中心昆明seo工资
  • 做安卓icon图标包下载网站静态网站开发
  • 住建局官网平台免费seo课程
  • 为什么公司要做网站网络平台推广广告费用
  • 网站建设标准依据衡阳百度推广公司
  • 做深度报道的网站公司推广咨询
  • 字体设计海报seo外链收录
  • 手机版网站建设价格宁波seo推广外包公司
  • 做图片祝福的网站促销策略
  • 微站开发百度seo怎么关闭
  • 爱民网站制作关键词优化按天计费
  • 怎样向网站上传照片短视频关键词seo优化
  • 公司微信网站开发平台怎么在百度发广告