编程初学者入门训练-KiKi设计类继承

目录

  1. KiKi定义电子日历类
  2. KiKi设计类继承

1.题目描述

KiKi学习了面向对象技术,学会了通过封装属性(变量)和行为(函数)定义类,现在他要设计一个电子日历类TDate。
它有3个私有数据成员:Month,Day,Year和若干个公有成员函数,要求:
(1)带有默认形参值的构造函数,默认值为0, 0, 0;
(2)输出日期函数,用“日/月/年”格式输出日期;
(3)设置日期函数,从键盘输入年、月、日。

1.1输入描述

一行,三个整数,用空格分隔,分别表示年、月、日。

1.2输出描述

一行,用“日/月/年”格式输出日期。

1.3示例1

输入

2019 12 30

输出

30/12/2019

1.4代码实现

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;


class TData{
    private int Year;
    private int Month;
    private int Day;
    
    public TData(){
        this.Year = 0;
        this.Month = 0;
        this.Day = 0;
    }
    
    public TData(int Year, int Month, int Day){
        System.out.println(Day+"/"+Month+"/"+Year);
    }
}

public class Main{
    public static void main(String[] args) throws IOException{
        BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
        String[] strs = bf.readLine().split(" ");
        int[] arr = new int[3];
        for(int i=0;i<arr.length;i++){
            arr[i] = Integer.parseInt(strs[i]);
        }
        TData example = new TData(arr[0],arr[1],arr[2]);
    }
}


2.题目描述

KiKi理解了继承可以让代码重用,他现在定义一个基类shape,私有数据为坐标点x,y, 由它派生Rectangle类和Circle类,它们都有成员函数GetArea()求面积。派生类Rectangle类有数据:矩形的长和宽;派生类Circle类有数据:圆的半径。Rectangle类又派生正方形Square类,定义各类并测试。输入三组数据,分别是矩形的长和宽、圆的半径、正方形的边长,输出三组数据,分别是矩形、圆、正方形的面积。圆周率按3.14计算。

2.1输入描述

输入三行,
第一行为矩形的长和宽,
第二行为圆的半径,
第三行为正方形的边长。

2.2输出描述

三行,分别是矩形、圆、正方形的面积。

2.3示例1

输入

7 8
10
5

输出

56
314
25

2.4代码实现

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;


class shape{
    private int x;
    private int y;
    
    public Object GetArea(){
		return x*y;
    }
}

class Rectangle extends shape{
    private int r_length;
    private int r_width;
    
    public Rectangle(int r_length,int r_width){
        this.r_length = r_length;
        this.r_width = r_width;
    }
    
    public Object GetArea(){
        return r_length*r_width;
    }
}

class Circle extends shape{
    private int c_radius;
    
    public Circle(int c_radius){
        this.c_radius = c_radius;
    }
    
    public Object GetArea(){
        double a = 3.14*Math.pow(c_radius,2); 
        int b = (int) a;
        if(b==a) {
        	return b;
        }else {
        	return a;
        }
    }
}

class Square extends Rectangle{
    public Square(int s_length){
        super(s_length,s_length);
    }
}

public class Main{
    public static void main(String[] args) throws IOException{
        BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
        String[] strs = bf.readLine().split(" ");
        int r_length = Integer.parseInt(strs[0]);//矩形的长
        int r_width = Integer.parseInt(strs[1]);//矩形的宽
        int c_radius = Integer.parseInt(bf.readLine());//圆的半径
        int s_length = Integer.parseInt(bf.readLine());//正方形边长
        
        shape r = new Rectangle(r_length,r_width);
        shape c = new Circle(c_radius);
        shape s = new Square(s_length);
        
        System.out.println(r.GetArea());
        System.out.println(c.GetArea());
        System.out.println(s.GetArea());
    }
}