Java暑期学习第五十天日报

一、今日学习内容:

今天练习实验七的内容。

二、遇到的问题:

三、明日计划:

明天继续练习实验七的习题。

 

今日练习的具体内容如下:

 

1.人、学生和教师

设计一个类people,有保护数据成员:age(年龄,整型),name(姓名,string),行为成员:两个构造函数(一个默认,另一个有参数);void setValue(int m, string str)给age和name赋值;有一个void类型的纯虚函数display()。

设计一个学生类student,公有继承类people,有私有成员:studentID(学号,整型),行为成员:两个构造函数(一个默认,另一个有参数);void setID(int m)给studentID赋值;display()函数输出学生的姓名,年龄,学号。

设计一个教师类teacher,公有继承类people,有私有成员:teacherID(工号,整型),行为成员:两个构造函数(一个默认,另一个有参数);void setID(int m)给teacherID赋值; display()函数输出教师的姓名,年龄,工号。

在main函数定义学生对象和教师对象,给对象初始化赋值或调用setValue()和setID()赋值,并输出学生和老师的信息。

提示:纯虚函数所在类不可定义对象

 

import java.util.Scanner;
public abstract class  People_teacher {
    protected int age;
    protected String name;
    People_teacher(){
        
    }
    People_teacher(int a,String s){
        age=a;
        name=s;
    }
    public void setvalue(int a,String s){
        age=a;
        name=s;
    }
    public abstract void display();
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        Scanner sc1=new Scanner(System.in);
        System.out.println("请输入一个学生的学号、年龄、姓名:");
        int a=sc.nextInt();
        int b=sc.nextInt();
        String s=sc.nextLine();
        student stu=new student();
        stu.setvalue(a,b,s);
        System.out.println("请输入一个教师的工号、年龄、姓名:");
        int a1=sc1.nextInt();
        int b1=sc1.nextInt();
        String s1=sc1.nextLine();
        teacher tea=new teacher();
        tea.setvalue(a1,b1, s1);
        stu.display();
        tea.display();
    }

}
class student extends People_teacher{
    private int StudentID;
    student(){
        
    }
    student(int m){
        StudentID=m;
    }
    public void setvalue(int m,int a,String s) {
        StudentID=m;
        age=a;
        name=s;
    }
    @Override
    public void display() {
        System.out.println("姓名:"+name);
        System.out.println("年龄:"+age);
        System.out.println("学号:"+StudentID);

    }
    
}
class teacher extends People_teacher{
    private int TeacherID;
    teacher(){
        
    }
    teacher(int m){
        TeacherID=m;
    }
    public void setvalue(int m,int a,String s) {
        TeacherID=m;
        age=a;
        name=s;
    }
    @Override
    public void display() {
        System.out.println("姓名:"+name);
        System.out.println("年龄:"+age);
        System.out.println("工号:"+TeacherID);

    }
    
}

 

测试截图:

 

 

 

2.动物类

【问题描述】

定义猫科动物Animal类,由其派生出猫类(Cat)和豹类(Leopard),在Animal类中定义虚函数,输出“My name is Animal”,在派生类中分别重新定义该函数,显示“My name is  **”,其中**为各自类名

 

public  class Animal {
    private String name="Animal";
    public  void show() {
        System.out.println("My name is "+name+"!");
    }
    public static void main(String [] args) {
        Animal A=new Animal();
        A.show();
        cat C=new cat();
        C.show();
        Leopard L=new Leopard();
        L.show();
    }

}
class cat extends Animal{
    private String name="Cat";
    public  void show() {
        System.out.println("My name is "+name+"!");
    }
}
class Leopard extends Animal{
    private String name="Leopard";
    public  void show() {
        System.out.println("My name is "+name+"!");
    }
} 

测试截图:

 

 

 

3.形状类

【问题描述】

定义shape类,无数据成员,包含两个纯虚函数成员void setvalues() 和float area() ,由shape类进行派生如下:

矩形类,包含两个数据成员变量用于描述底和高,均为float类型,重新定义上述两个纯虚函数成员,完成数据成员值的设定和面积的计算;

三角形类,包含两个数据成员变量用于描述底和高,均为float类型,重新定义上述两个纯虚函数成员,完成数据成员值的设定和面积的计算;

正方形类,包含一个数据成员变量用于描述边长,float类型,重新定义上述两个纯虚函数成员,完成数据成员值的设定和面积的计算;

圆形类,包含一个数据成员变量用于描述半径,float类型,重新定义上述两个纯虚函数成员,完成数据成员值的设定和面积的计算;

在主函数中定义相应的指针对象和普通对象,利用虚函数实现多态,依次分别输入矩形的底和高,三角形的底和高,正方形的边长,圆形的半径,若其中任何一个值小于等于0,则输出Set Value Error!,然后退出程序,对于之前已正确输入的数值计算相应形状的面积。

 

import java.util.Scanner;
public abstract class shape {
    public abstract void setvalue(float m,float n);
    public abstract float area();
    public static void main(String [] args) {
        System.out.println("请输入矩形的长和宽:");
        Scanner sc=new Scanner(System.in);
        float x=sc.nextFloat();
        float y=sc.nextFloat();
        if(x<0||y<0) {
            System.out.println("Setvalue error!");
            System.exit(0);
        }
        Rectangle R=new Rectangle();
        R.setvalue(x, y);
        R.area();
        System.out.println();
        System.out.println("请输入三角形的高和底:");
        Scanner sc1=new Scanner(System.in);
        float x1=sc1.nextFloat();
        float y1=sc1.nextFloat();
        if(x1<0||y1<0) {
            System.out.println("Setvalue error!");
            System.exit(0);
        }
        Triangle T=new Triangle();
        T.setvalue(x1, y1);
        T.area();
        System.out.println();
        System.out.println("请输入正方形的边长:");
        Scanner sc2=new Scanner(System.in);    
        float x2=sc2.nextFloat();
        if(x2<0) {
            System.out.println("Setvalue error!");
            System.exit(0);
        }
        Square S=new Square();
        S.setvalue(x2,x2);
        S.area();
        System.out.println();
        System.out.println("请输入圆形的半径和Pi:");
        Scanner sc3=new Scanner(System.in);
        float x3=sc3.nextFloat();
        float y3=sc3.nextFloat();
        if(x3<0||y3<0) {
            System.out.println("Setvalue error!");
            System.exit(0);
        }
        Circle C=new Circle();
        C.setvalue(x3, y3);
        C.area();
        
    }

}
class Rectangle extends shape{
    private float height;
    private float weight;
    @Override
    public void setvalue(float m, float n) {
        height=m;
        weight=n;
    }
    @Override
    public float area() {
        float result;
        result=height*weight;
        System.out.println("矩形的面积为:"+result);
        return 0;
    }
    
}
class Triangle extends shape{
    private float height;
    private float weight;
    public void setvalue(float m, float n) {
        height=m;
        weight=n;
    }
    @Override
    public float area() {
        float result;
        result=height*weight/2;
        System.out.println("矩形的面积为:"+result);
        return 0;
    }
}
class Square extends shape{
    private float a;
    @Override
    public void setvalue(float m, float n) {
        a=m;
        a=n;
        
    }

    @Override
    public float area() {
        float result;
        result=a*a;
        System.out.println("矩形的面积为:"+result);
        return 0;
    }
    
}
class Circle extends shape{
    private float r;
    private float Pi;
    @Override
    public void setvalue(float m, float n) {
        r=m;
        Pi=n;
    }

    @Override
    public float area() {
        float result;
        result=Pi*r*r;
        System.out.println("矩形的面积为:"+result);
        return 0;
    }
    
}

 

 

测试截图:

    

 

posted on 2020-08-24 17:30  桑榆非晚柠月如风  阅读(116)  评论(0编辑  收藏  举报