问题:利用多态编程创建一个图形(Shape)类,实现求正方形(Square),三角形(Triangle),圆(Circle)的面积,
方法:抽象一个共享父类,定义一个函数为求面积的公共界面,再重新定义各形状的求面积函数。在主类中创建不同类的对象,并求得不同形状的面积。
进入正题...
在同一个包下分别建立以下五个类,运行TestShape类即可!
// 抽象类--图形--------------------------------------
public abstract class Shape {
//抽象方法取得图形的面积
public abstract double getArea();
}
// 正方形继承图形的类-------------------------------
public class Square extends Shape {
// 正方形的边长
private double height = 0;
// 构造函数
public Square(double height) {
this.height = height;
}
//@Override
public double getArea() {
return (this.height * this.height); // Math.pow(this.height , 2);
}
}
//圆继承图形的类-------------------------
public class Circle extends Shape {
// 圆的半径
private double r = 0;
// 圆周率
private final static double PI = 3.14;
// 构造函数
public Circle(double r) {
this.r = r;
}
@Override
public double getArea() {
return (PI * r * r);
}
}
//三角形继承图形的类------------------------------
public class Triangle extends Shape {
// 三角形的边1
private double a = 0;
// 三角形的边2
private double b = 0;
// 三角形的边3
private double c = 0;
// 三角形的高
private double h = 0;
// 构造函数,已知三角形的高和底
public Triangle(double a, double h) {
this.a = a;
this.h = h;
}
// 构造函数,已知三角形的三边长度
public Triangle(double a, double b, double c) {
this.a = a;
this.b = b;
this.c = c;
}
@Override
public double getArea() {
if (h == 0) {
// 根据海伦公式求三角形的面积
double s = (a+b+c)/2;
return Math.pow(s*(s-a)*(s-b)*(s-c), 0.5);
} else {
// 普通公式
return ( a * h / 2);
}
}
}
//测试类--------------------------------------------
public class TestShape {
public static void main(String[] args) {
// 构造一个边长为3的正方形
Shape square = new Square(3) ;
// 构造一个半径为2的圆
Shape circle = new Circle(2) ;
// 构造一个边长分别为3,4,5的三角形(根据勾股定理知道是直角三角形)
Shape triangle1 = new Triangle(3, 4, 5);
// 构造一个高和底分别为3,4的三角形
Shape triangle2 = new Triangle(3, 4);
System.out.println(square.getArea());
System.out.println(circle.getArea());
System.out.println(triangle1.getArea());
System.out.println(triangle2.getArea());
}
}
测试结果:
9.0
12.56
6.0
6.0
分享到:
相关推荐
总结来说,这个实例通过接口和抽象类实现了多态性,让代码能够处理不同类型的对象,同时结合两种不同的排序算法,展示了多态在实际编程中的应用。这样的设计提高了代码的可复用性和可扩展性,使得新数据类型或排序...
在Java编程语言中,多态性(Polymorphism)是面向对象编程的三大特性之...通过以上实例,我们可以看到多态在实际编程中的具体应用。在实际工作中,你可以根据项目需求,结合多态性来设计更高效、更具有弹性的代码结构。
在Java编程语言中,多态性(Polymorphism)是面向对象编程的三大特性之一,另外两个...对于给定的压缩包文件"com多态",可能包含了相关的示例代码或者练习,这些可以帮助你更直观地理解并掌握多态在实际编程中的应用。
Java的多态性是面向对象编程的一个核心特性,它允许我们使用一个接口来表示不同的类,使得代码更加灵活,易于维护。多态性是通过继承、接口和方法重写来实现的,它让程序在运行时能够根据对象的实际类型执行相应的...
在本实例中,我们将探讨这些关键概念,并通过具体代码示例来展示它们的实际应用。 首先,**接口(Interface)**是Java中的一个重要概念,它是一种完全抽象的类,只能包含常量定义和抽象方法。接口用于定义对象间的...
### Java多态经典讲解 #### 一、理解Java多态 多态,作为面向对象编程的三大特性之一,是继抽象和继承之后的关键概念。它允许我们以统一的接口处理不同类型的对象,增强了代码的灵活性和可扩展性。在Java中,多态...
Java多态是面向对象编程的核心概念之一,它允许不同类的对象对同一消息做出响应。本文介绍了Java多态在实际应用中的体现,通过一个示例程序展示了如何使用抽象类、继承和接口等特性实现多态。 首先,文档中定义了一...
### C++和Java多态的区别 #### 一、概述 多态是面向对象编程语言中的一个核心特性,它允许程序员能够使用基类的指针或引用指向派生类的对象,并在运行时根据对象的实际类型来选择合适的方法进行调用。这一特性增强...
在这个“java多态实验”中,我们可以看到一系列小代码实例,这些实例旨在帮助理解和应用多态特性。下面我们将深入探讨多态的概念、实现方式以及它在实际开发中的应用。 1. 多态性定义: 多态(Polymorphism)源自...
总结来说,这个实验深入地探讨了Java中的继承和多态特性,通过一个实际的工资管理系统案例,展示了如何在实际编程中应用面向对象编程的基本原则。它帮助学习者理解如何定义类、创建对象、使用继承来构建类的层次结构...
在给定的“java多态作业”中,可以看到多态性的应用主要体现在实现多个接口(MouseMotionListener、MouseListener和ActionListener),这些接口代表了不同的事件监听器,每个接口都定义了一系列方法来处理特定类型的...
Java的多态性是面向对象编程的一个核心概念,它允许我们使用一个接口来表示不同的类。多态在Java中有着深远的影响,它提高了代码的可重用性、灵活性和可扩展性。本篇将通过一个经典例子深入解析多态的含义,并通过...
Java多态是面向对象编程中的一个核心概念,它在程序设计中扮演着至关重要的角色。多态性(Polymorphism)一词源自希腊语,意为“多种形态”,在Java中,它允许我们使用一个接口来代表多个不同类的对象,从而实现更...
Java多态是面向对象编程中的一个核心概念,它允许我们使用父类引用处理子类对象,从而实现更灵活的代码设计。在这个“Java多态案例及源码.rar”压缩包中,你将找到一系列关于Java多态的实例和源代码,非常适合教师在...
### Java多态详解 #### 什么是多态? 多态(Polymorphism)是面向对象编程的一个核心特性,指的是一个接口可以被多个类所实现或一个类可以被多个类所继承,进而表现出不同的行为。在Java中,多态主要体现在两个...
在这个“java多态性练习”中,我们将深入探讨多态性的概念、抽象类(abstract class)以及它们在实际编程中的应用。 首先,多态性(Polymorphism)这个词源于希腊语,意为“多种形态”。在Java中,多态性主要体现在...
在深入探讨"JAVA 2应用编程实例"这个主题之前,我们先来理解一下Java 2,也就是Java 2平台标准版(Java 2 Platform Standard Edition,J2SE)。它是Java技术的核心部分,提供了构建和运行桌面应用、服务器应用以及...
#### 六、Java多态的应用实例 为了更好地理解Java多态的应用,下面通过一个简单的示例来说明。 **示例**:假设有一个`Animal`类作为基类,它有一个`makeSound()`方法。我们可以创建两个子类`Dog`和`Cat`,分别重写...