面向对象程序设计(Java)实验3

本文通过实验展示了Java编程中匿名内部类的使用,以及如何实现图形接口。在实验内容一中,创建了一个类B的匿名内部类对象,并覆盖了方法f。在实验内容二中,定义了一个图形接口Shape,实现了圆类和长方形类,并进行了测试,计算了它们的面积和周长。实验旨在帮助读者理解Java的访问修饰符、静态成员与非静态成员的差异,以及匿名内部类的应用。
摘要由CSDN通过智能技术生成

实验内容

上机实现下列程序并观察程序的运行情况:

  1. 设计两个类A、B,在类A的主方法main里创建一个类B的匿名内部类对象,覆盖B中的方法f,并调用此方法。
  2. 定义一个图形接口,包含计算图形的面积和周长方法。 定义一个圆类和长方形类分别实现图形接口的方法。并写一测试类进行测试。

实验要求

  1. 熟悉四种访问修饰符类型的成员的访问方法。
  2. 熟悉静态成员与非静态成员的区别。
  3. 掌握匿名内部类的使用。

实验内容一

package test3;

class B {
    public void f(){
        System.out.println("Hello World");
    };
}

public class A {
    public static void main(String [] args){
        B demo = new B(){
            public void f(){
                System.out.print("Hello Java");
            }
        };
        demo.f();
    }
}

运行结果:
在这里插入图片描述

实验内容二

package test3;
import java.lang.Math;
import java.util.Scanner;
public interface Shape {
    double area();
    double perimeter();
}
abstract class circle implements Shape{
    public double r;
    public circle(double r){
        this.r = r;
    }
}
abstract class rectangle implements Shape{
    public double x;
    public double y;
    public rectangle(double x,double y){
        this.x = x;
        this.y = y;
    }
}

class demo{
    public static void main(String[] args){
        Scanner input = new Scanner(System.in);
        double r = input.nextDouble();
        circle a = new circle(r) {
            @Override
            public double area() {
                double ar;
                ar = Math.PI * r * r;
                return ar;
            }

            @Override
            public double perimeter() {
                double pe = Math.PI * r * 2;
                return pe;
            }
        };
        System.out.println(a.area());
        System.out.println(a.perimeter());
        double x = input.nextDouble();
        double y = input.nextDouble();
        rectangle b = new rectangle(x,y) {
            @Override
            public double area() {
                return x*y;
            }

            @Override
            public double perimeter() {
                return 2*(x+y);
            }
        };
        System.out.println(b.area());
        System.out.println(b.perimeter());
    }
}

运行结果:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Chiaki_0ff

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值