zoukankan      html  css  js  c++  java
  • Java作业二 面向对象程序设计

    掌握类、对象、方法、继承、接口的编程技术

    一、编写一个含有5个类的程序

    1. Person类

      属性:编号、姓名、性别;

      构造方法:确定编号和姓名;

      一般方法:修改编号、姓名,获取编号、姓名。

    2. Teacher类

      继承Person类并增加:

      属性:系别;

      构造方法:调用父类的构造方法;

      一般方法:修改、获取系别。

    3. Student类

      继承类Person并增加:

      属性:班级;

      构造方法:调用父类的构造方法;

      一般方法:修改、获取班级属性值。

    4. Klass类:

      属性:班级名称,学生名单(Student类对象的数组);

      构造方法:确定班级名称;

      一般方法:建立学生名单,输出学生名单。

    5. Main类:

      主类。主方法中创建一个班级,然后建立该班级的学生名单,最后输出学生名单。

    代码实现

    import java.util.Scanner;
    
    public class Main
    {
        public static class Person
        {
            private String number;
            private String name;
            private String gender;
            public Person(String number,String name)
            {
                this.number = number;
                this.name = name;
            }
            public void setNumber(String number)
            {
                this.number = number;
            }
    
            public void setName(String name)
            {
                this.name = name;
            }
    
            public String getNumber()
            {
                return number;
            }
    
            public String getName()
            {
                return name;
            }
        }
    
        public static class Teacher extends Person
        {
            private String department;
            public Teacher(String number, String name)
            {
                super(number, name);
            }
    
            public void setDepartment(String department)
            {
                this.department = department;
            }
    
            public String getDepartment()
            {
                return department;
            }
        }
    
        public static class Student extends Person
        {
            private  String grade;
    
            public Student(String number, String name)
            {
                super(number, name);
            }
    
            public void setGrade(String grade)
            {
                this.grade = grade;
            }
    
            public String getGrade()
            {
                return grade;
            }
        }
    
        public static class Classes
        {
            private String className;
    
            private Student stuList[] = new Student[100];
            public Classes(String className)
            {
                this.className = className;
            }
    
            public void setStuList(int i,Student student)
            {
                stuList[i] = student;
            }
    
            public void getStuList(int n)
            {
                for (int i = 0; i < n; i++)
                {
                    System.out.println(stuList[i].getName());
                }
            }
        }
    
        public static void main(String args[])
        {
            System.out.println("请输入班级名称:");
            Scanner scanner = new Scanner(System.in);
    
            if (scanner.hasNext())
            {
                String classname = scanner.next();
                Classes class1 = new Classes(classname);
                System.out.println("请输入班级人数:");
                int sum = Integer.parseInt(scanner.next());
                System.out.println("请分别输入每位学生的编号和姓名:");
                for (int i = 0; i < sum; i++)
                {
                    String number = scanner.next();
                    String name = scanner.next();
                    Student student = new Student(number,name);
                    class1.setStuList(i,student);
                }
                System.out.println("该班级的学生名单如下:");
                class1.getStuList(sum);
            }
        }
    }
    

    运行截图

    二、阅读程序题1

    请仔细阅读下面的程序,分析程序的结构和输出结果。再将程序上机运行,验证输出结果。(重点理解:抽象类、抽象方法、(匿名)内部类、匿名对象)

    abstract class A{abstract String getS();}
    
    class Test
    { 
        public static void main(String args[])
        {
            System.out.println(new A(){ String getS(){ return "抽象?匿名?";}}.getS());
    
        }
    }
    

    分析:

    定义了一个抽象类A,然后在主类的主方法中使用了它。

    一般来说用到抽象类的时候,要先定义一个子类来继承它,并且实现它所有的抽象方法。抽象类中所有方法都是抽象的,没有方法体。也就是说抽象类的所有方法在子类中都要实现,不然子类仍是抽象的。

    这里用到的是匿名内部类,省去了写子类继承抽象类—创建对象—用对象调用子类的方法这一过程。格式是这样new 抽象类名或接口名(){覆盖重写所有抽象方法}

    匿名类不取名字,直接用父类的名字或接口的名字(接口跟抽象类相似)。使用new同时完成了类的定义和对象的创建。完成类的定义是指相当于声明了一个新的类来继承抽象类,所以必须在匿名类实现所有抽象方法,我们可以看到它实现了抽象类的方法String getS(){ return "抽象?匿名?";}。完成对象的创建是指我们new完之后可以直接将子类当成对象来用,子类中它直接用.来访问自己的方法.getS(),同时注意到new的时候在父类的名字后有一对(),这相当于调用构造对象时的构造方法,形参列表一般为空。

    结果:

    显然是输出抽象?匿名?这一字符串了。

    三、阅读程序题2

    请仔细阅读下面的程序,分析程序的结构和输出结果。再将程序上机运行,验证输出结果。

    (重点理解:接口、接口实现方法、(匿名)内部类、匿名对象)

    interface I{ String getS(); }
    
    class Test
    {
        public static void main(String args[]){
        System.out.println(new I(){ public String getS(){ return "接口和内部类!";}}.getS());}
    }
    

    这题跟上题相似,只不过把抽象类变成了接口。接口的抽象程度比抽象类更高。

    不同就在于抽象类中的方法在子类中必须全部实现,接口中的方法可以不必全部实现,可以只实现那些用得到的方法。

    输出结果也是字符串啦。

  • 相关阅读:
    echarts之tooltip
    js随笔
    在wex5平台grid显示问题
    JSON.parse()和JSON.stringify()区别
    在wex5平台grid里面的gridselect下拉不能显示汉字问题
    wex5平台放入tabs组件后运行时显示空白
    正整数求n不用sqrt
    leetcode1143最长公共子序列
    美团Java一面(2020.3.19)
    leetcode138. 复制带随机指针的链表
  • 原文地址:https://www.cnblogs.com/gylic/p/15778539.html
Copyright © 2011-2022 走看看