Java面向对象练习(多态,重写)

创建一个形状类(Shape),具有以下方法:

主类

public class Main {
    public static void main(String[] args){
        Shape circular=new Circular(3);
        Shape rectangle=new Rectangle(4,2);
        Calcuation.calculation(circular);
        Calcuation.calculation(rectangle);
    }
}

形状类(抽象类)

计算面积 计算周长

//形状类
public class Shape {
    //计算周长
    public void calculatePerimeter(){
    }
    //计算面积
    public void calculatedArea(){
    }
}

创建一个圆形类(Circular)继承于形状类并重写计算面积和计算周长方法 圆形类具有:

         特有的属性:半径

         特有的常量:PI = 3.1415926

半径的赋值使用构造方法

public class Circular extends Shape{
    //圆形类
    final double PI=3.1415926;
    int radius;
    //构造
    public Circular(int radius){
        this.radius=radius;
    }
    @Override
    public void calculatePerimeter(){
        System.out.println("圆的周长:"+PI * radius * 2);
    }
    @Override
    public void calculatedArea(){
        System.out.println("圆的面积:"+PI * radius * radius);
    }
}

创建一个矩形类(Rectangle)继承于形状类并重写计算面积和计算周长方法 矩形类具有:

         特有的属性:长、宽

         长、宽的赋值使用构造方法

public class Rectangle extends Shape{
    //矩形类
    int width;
    int length;
    public Rectangle(int width,int length){
        this.length=length;
        this.width=width;
    }
    @Override
    public void calculatePerimeter(){
        System.out.println("矩形的周长:"+(width+length)* 2);
    }
    @Override
    public void calculatedArea(){
        System.out.println("圆的面积:"+width*length);
    }
}

创建一个计算类(Calculation) 计算类具有:

         一个静态的计算方法,既可以计算圆形的面积,也可以计算矩形的面积

public class Calcuation {
    public static void calculation(Shape shape){
        shape.calculatePerimeter();
        shape.calculatedArea();
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
第四章 和对象 [习题] 1.成员的访问控制符有哪些? 2.为什么说构造函数是一种特殊的方法?特殊在哪里?构造函数什么时候执行?被谁调 用? 3.关键字static可以修饰哪些的组成部分? 4.静态属性有什么特点?对象可以访问或修改静态属性吗? 5.同名的不同方法共存的情况称为什么?如何区分这些同名方法? 6.什么是包?如何创立包?为什么要使用包?包物理地对应什么? 7.试写出一个语句创立一个名为MyPackage的包,这个语句应该放在程序的什么位置 ? 8.如何引用整个包?如何引用包中的一个?试写出引用MyPackage中所有的语句和 引用MyPackage包中的一个MyClass1。 9.阅读下面的程序,说明它们的输出。 public class UseRef{ public static void main(String args[]){ MyClass1 myobj,myref; myobj=new MyClass1(-1); myref=myobj; "+myobj.getData()); myref.setData(10); } } class MyClass1{ int data; MyClass1(int d){ data=d; } int getData(){ return data; } void setData(int d){ data=d; } } 10.编写一个实现秒表的功能。要求至少实现开始计时、停顿计时、分针秒针归零 、获得分针示数、获得秒针示数、获得总时间的毫秒数等功能。 11.编写一个实现复数的运算。要求至少实现复数相加、复数相减、复数相乘等功 能。 12.编程创立一个Box,在其中定义三个变量表示一个立方体的和高,定义 一个构造方法对这三个变量进展初始化,然后定义一个方法求立方体的体积。创立一个 对象,求给定尺寸的立方体的体积。 13.定义一个学生〔Student〕,属性包括:学号,班号,姓名,性别,年龄,班 级总人数;方法包括:获得学号,获得班号,获得姓名,获得性别,获得年龄,获得班 级总人数,修改学号,修改班号,修改姓名,修改性别,修改年龄以及一个toString() 方法将Student中的所有属性组合成一个字符串。定义一个学生数组对象。设计程序进 展测试。 14.定义一个学生一个课程,要求可以表示现实生活中一个学生可以选择多门 课程的情况。编写程序进展测试。 ----------------------- java面向对象程序设计习题-(11)全文共2页,当前为第1页。 java面向对象程序设计习题-(11)全文共2页,当前为第2页。
### 回答1: 要实现多态性的对象并调用shout方法打印输出信息,可以定义一个抽象的父及多个子继承该父重写shout方法。在代码中,可以声明一个型的变量,然后将不同子对象赋值给该变量,然后通过调用shout方法,即可实现多态性的效果,并打印出不同子的信息。 ### 回答2: 多态方式实例化子对象并调用shout方法打印输出信息,是面向对象编程中的一个重要概念。该方式可以实现代码的灵活和重用性,使得同样的代码可以适应不同的对象。 在Java语言中,可以通过父和子之间的多态关系来实现该功能。具体操作是:先定义一个,该父包含一个shout方法,该方法打印输出信息。然后再定义多个子,这些子继承自父,并对shout方法进行重写。 接下来,可以使用多态方式来实例化子对象并调用shout方法。具体操作是:定义一个方法,该方法参数为父型,利用该方法可以实例化子对象并调用shout方法。具体实现过程是:先定义一个型的变量,然后通过该变量实例化子对象,并调用shout方法输出信息。 例如,定义一个名为Animal的父,该包含一个名为shout的方法,用来打印动物的叫声。然后,定义两个Cat和Dog,这两个都继承自Animal,并对shout方法进行重写。Cat的shout方法输出"喵喵喵",Dog的shout方法输出"汪汪汪"。 接下来,定义一个名为callShout的方法,该方法的参数为Animal型,利用该方法可以实现多态实例化子对象并调用shout方法的功能。具体实现过程是:先创建一个型的变量animal,该变量根据传入的参数值进行多态实例化,然后调用该变量的shout方法打印输出信息。 最后,可以通过main方法调用callShout方法,并分别传入Cat、Dog的对象。调用Cat对象的shout方法输出"喵喵喵",调用Dog对象的shout方法输出"汪汪汪"。这样,就实现了多态方式实例化子对象并调用shout方法打印输出信息的功能。 ### 回答3: 多态面向对象编程(OOP)中的一个重要概念。它允许我们使用父的引用指向子的对象,从而调用父和子中的方法和属性。 在Java中,我们可以通过以下两种方法实现多态: 1. 接口实现多态 2. 继承实现多态 其中继承实现多态是我们最为常见的方式。我们可以通过向上转型将子对象转换为父对象,从而实现多态。 下面是一个示例代码,在Dog中实现shout方法,并使用Animal型的引用animal指向Dog型的对象,从而调用Dog中的shout方法: ``` class Animal { public void shout() { System.out.println("动物叫"); } } class Dog extends Animal { public void shout() { System.out.println("汪汪汪"); } } public class Main { public static void main(String[] args) { Animal animal = new Dog(); animal.shout(); } } ``` 在上面的代码中,我们首先定义了一个Animal,声明了一个shout方法。然后我们定义了一个Dog,它继承了Animal,并重写了shout方法。 在Main中,我们首先创建一个Animal型的引用animal,然后使用new关键字创建一个Dog型的对象,并将它赋值给animal引用。这里通过向上转型将Dog对象转换为Animal型的对象,实现了父的引用指向子的对象。 接着调用了animal对象的shout方法,输出了"汪汪汪"。这里实际上调用的是Dog重写过的shout方法,而不是Animal中的shout方法。 通过上面的示例代码,我们可以看到在继承体系中使用多态的基本方法。实现多态可以让程序更加灵活和易于扩展,是Java面向对象编程中一个重要的概念。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值