• 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;
        }
        
    }

    测试截图:

        

  • 相关阅读:
    转载:山寨币凶猛
    Windows8.1 关机异常的解决
    Windows8、Windows8.1使用便签工具
    下载Sourceforge等国内无法下载站点文件的另一种方法
    专著出版成本计算
    PL2303 Windows8.1驱动
    转载:寒门再难出贵子
    华为荣耀品牌独立,子品牌战略能否实现新突破
    路由大战前夜,盘点智能路由的前世今生
    2020年实用工具推荐
  • 原文地址:https://www.cnblogs.com/Lizhichengweidashen/p/13562631.html
Copyright © 2020-2023  润新知