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

实验内容

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

  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());
    }
}

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

posted @ 2022-04-10 22:09  CK_0ff  阅读(169)  评论(0编辑  收藏  举报