Java 面向对象中的小测试

标签: java

编写环境为IDEA
如下图所示
在这里插入图片描述

请按照题目的要求编写程序并给出运行结果。 
1、 设计一个学生类 Student 和它的一个子类 Undergraduate,要求如下:

 1)Student 类有 name(姓名)、和 age(年龄)属性,一个包含两个参数的构造方法,用于给 name 和 age 属性赋值,
 一个 show()方法打印 Student 的属性信息

 2) 本科生类 Undergraduate 增加一个 degree(学位)属性。
 有一个包含三个参数的构造方法,前两个 参数用于给继承的 name 和 age 属性赋值,
 第三个参数给 degree 专业赋值,一个 show()方法用 于打印 Undergraduate 的属性信息

 3) 在测试类中分别创建 Student 对象和 Undergraduate 对象,调用它们的 show()。 
package SanHomeworkTest;
//创建一个学生类
class Student{
   public String name; //定义变量name
   public int age; //定义变量age
   //创建一个包含两个参数的构造方法
   //这里注意构造方法名一定要和类名相同,并且没有返回值类型的声明,也不能使用return语句返回一个值
    public  Student(String name,int age){
            this.name = name;//使用this关键字访问类中的成员变量
            this.age = age;//使用this关键字访问类中的成员变量
    }
    //定义一个show方法,用来打印Student的属性信息
   public void show(){

        System.out.println("姓名:"+name+","+"年龄:"+age);//打印name,age的属性信息
    }
}

//定义一个Undergraduate 子类 去继承Student类
class Undergraduate extends Student{
   //定义degree属性
   public String degree;
   //定义一个含有三个参数的有参构造方法,
    public Undergraduate(String name,int age,String degree){
        super(name,age);//使用super关键字获取父类中的name和age属性
        this.degree = degree;//使用this关键字去访问类中的成员变量
    }
    //定义一个show方法,用于打印属性信息
    public void show(){
        System.out.println("姓名:"+name+","+"年龄:"+age+","+"学位:"+degree);
    }
}

//定义一个测试类PractiseOne
public class PractiseOne {
    public static void main(String[] args) {
        Student stu1 = new Student("张三",20);  //创建一个Student对象,并传入属性值
        Undergraduate under1 = new Undergraduate("李四",22,"学士学位"); //创建一个Undergraduate对象,并传入属性值
        stu1.show();//调用Student类中的show方法
        under1.show();//调用Undergraduate类中的show方法
    }
}

2、设计一个 Shape 接口和它的两个实现类 Square 和 Circle,要求如下:

 1)Shape 接口中有一个抽象方法 area(),方法接收有一个 double 类型的参数,返回一个 double 类 型的结果

 2)Square 和 Circle 中实现了 Shape 接口的 area()抽象方法,
 分别求正方形和圆形的面积并返回 在测试类中创建 Square 和 Circle 对象,
 计算边长为 2 的正方形面积和半径为 3 的圆形面积
package SanHomeworkTest;
//创建一个Shape接口
interface Shape{
    double area(double x); //定义一个抽象方法,接收一个double类型的参数
}

//定义一个Square类去实现Shape接口
class Square implements Shape{
//定义一个area方法,并接收一个double类型的参数,返回参数之积
    public double area(double sideLength){
            return sideLength * sideLength;
    }
}
//定义一个Circle类,去实现Shape接口
class Circle implements Shape{
//定义一个area方法,并接收一个double类型的参数,返回参数之积
    public double area(double r){
        return Math.PI * r * r ; //调用math中的PI
    }
}

//定义一个测试类PractiseTwo
public class PractiseTwo {
    public static void main(String[] args) {
        Square square = new Square(); //创建一个Square对象
        Circle circle = new Circle();//创建一个Circle对象
        double s =square.area(2); //调用Square中的area方法,并传入一个参数并将结果赋值给double类型的变量s
        double yuan = circle.area(3);//调用Circle中的area方法,并传入一个参数并将结果赋值给double类型的变量yuan
        System.out.println(s);
        System.out.println(yuan);
    }
}

3、自定义一个异常类 NoThisSoundException 和 Player 类,在 Player 的 play()方法中使用自定义异常, 要求入下: 

1)NoThisSongException 继承 Exception 类,
类中有一个无参和一个接收一个 String 类型参数的 构造方法,
构造方法中都使用 super 关键字调用父类的构造方法。

 2)Player 类中定义一个 play(int index)方法,方法接收一个 int 类型的参数,表示播放歌曲的索 引,
 当 index>10 时,paly()方法用 throw 关键字抛出 NoThisSongException 异常,
 创建异常对 象时,调用有参的构造方法,传入“您播放的歌曲不存在” 。

 3) 在测试类中创建 Player 对象,并调用 play()方法测试自定义的 NoThisSongException 异常,
 使 用 try…catch 语句捕获异常, 调用 NoThisSongException 的 getMessage()方法打印出异常信息。

package SanHomeworkTest;
//自定义一个异常类NoThisSoundException 并且继承Exception 类
class NoThisSoundException extends Exception{
    public NoThisSoundException(){     //定义一个无参构造方法NoThisSoundException
        super();//使用super关键字调用父类中的方法
    }
    //定义一个有参构造方法NoThisSoundException,接收一个String 类型的参数
    public NoThisSoundException(String message){
        super(message);//使用super关键字调用父类中的方法
    }
}

//定义一个Player类
class Player {
//定义一个play方法,并且接收一个int类型的参数,play方法中使用throw关键字抛出NoThisSoundException异常
    public void play(int index) throws NoThisSoundException{
            if (index > 10){
            throw new NoThisSoundException("您播放的歌曲不存在");//创建异常对象,调用有参构造方法,传入您播放的歌曲不存在
            }
            System.out.println("正在播放歌曲");//没有异常的话就程序正常运行
    }
}
//定义一个测试类
public class PractiseThree {
    public static void main(String[] args) {
        Player player = new Player(); //创建一个Player对象
        try {
            player.play(9); //调用Play中的play方法
        }
        catch (Exception e){
           System.out.println("异常信息为:"+ e.getMessage());//抛出异常信息
        }
    }
}

1、请按照以下要求设计一个学生类 Student,并进行测试。 要求如下:

 1)Student 类中包含姓名、成绩两个属性 
 
2)分别给这两个属性定义两个方法,一个方法用于设置值,另一个方法用于获取值.

 
 3)Student 类中定义一个无参的构造方法和一个接收两个参数的构造方法,两个参数分别为姓名和 成绩属性赋值 

4)在测试类中创建两个 Student 对象,一个使用无参的构造方法,然后调用方法给姓名和成绩赋值, 
一个使用有参的构造方法,在构造方法中给姓名和成绩赋值 

package ObjectOriented.ThreeUnit;

 class OneTestStudent1 {
    private String name;
    private double grade;
    public OneTestStudent1(){

    }
    public OneTestStudent1(String name,double grade){
        this.name = name;
        this.grade = grade;

    }
    public String getName(){
        return name;
    }
    public void setName(String name){
        this.name=name;
    }
    public double getGrade(){
        return grade;
    }
    public void setGrade(double grade){
        this.grade=grade;
    }
}
public class OneTestStudent{
    public static void main(String[] args) {
        OneTestStudent1 stu1 = new OneTestStudent1();
        stu1.setName("zhangsan");
        stu1.setGrade(100);
        OneTestStudent1 stu2 = new OneTestStudent1("lisi",99);
        System.out.println("姓名"+stu1.getName()+"分数"+stu1.getGrade());
        System.out.println("姓名"+stu2.getName()+"分数"+stu2.getGrade());

          
    }
}


2、定义一个 Father 和 Child 类,并进行测试。 要求如下:

 1)Father 类为外部类,类中定义一个私有的 String 类型的属性 name,name 的值为“zhangjun”。
 
  2)Child 类为 Father 类的内部类,其中定义一个 introFather()方法,方法中调用 Father 类的 name 属性。
  
   3)定义一个测试类 Test,在 Test 类的 main()方法中,创建 Child 对象,并调用 introFather()方法。

package ObjectOriented.ThreeUnit;
class Father{
    private String name="www";
    class Child{
        public void introFather(){
            System.out.println("My Father's name is "+name);
        }
    }
}

public class TwoTest {
    public static void main(String[] args) {
        Father.Child stu = new Father().new Child();
        stu.introFather();
    }
}

请按照题目的要求编写程序并给出运行结果。 
1、请编写程序,实现计算“1+3+5+7+…+99”的值。 提示:

 1) 使用循环语句实现自然数 1~99 的遍历。

 2) 在遍历过程中,通过条件判断当前遍历的数是否为奇数,如果是就累加,否则不加。 
package SanHomeworkTest;

public class Test01 {
    public static void main(String[] args) {
        int sum = 0;
        for (int i = 1; i < 100; i++) {
            if (i % 2 != 0)
                sum += i;
        }
        System.out.println(sum);
    }
}
2、已知函数

 x+3 (x>0)
 y= 0(x= 0) 
 x2 –1 (x<0) 

请设计一个方法实现上面的函数,根据传入的值 x 的不同,返回对应的 y 值。 提示:

 1) 定义一个 static 修饰符修饰的方法,方法接收一个 int 类型的参数 x,返回值为 int 类型。

 2) 在方法中使用 if…elseif..else 语句针对 x 的值进行三种情况的判断。

 3) 根据判断结果分别执行不同的表达式,并将结果赋予变量 y。

 4) 在方法的最后返回 y 的值。

 5) 在 main 方法中调用设计好的方法,传入一个 int 型的值,将方法的返回值打印。 
package SanHomeworkTest;

public class four1{
    public static void main(String args[]) {
        int y = function(0);
        System.out.println(y);
    }
    public static int function(int x) {
        int y;
        if (x > 0) {
            y = x + 3;
        } else if (x == 0) {
            y = 0;
        } else {
            y = x * x - 1;
        }
        return y;
    }
}

请编写程序,实现对数组{25,24,12,76,101,96,28} 的排序。 提示:使用冒泡排序算法。

package SanHomeworkTest;

public class four2TwoUnit {
    public static void main(String[] args) {
        int[] arr = { 25, 24, 12, 76, 101, 96, 28 };
        for (int i = 0; i < arr.length - 1; i++) {
// 定义内层循环
            for (int j = 0; j < arr.length - i - 1; j++) {
                if (arr[j] > arr[j + 1]) { 
                    // 比较相邻元素
// 下面的三行代码用于交换两个元素
                    int temp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = temp;
                }
            }
        }
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i] + " "); // 打印元素和空格
        }
    }

}


版权声明:本文为qq_28513801原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_28513801/article/details/90647662

智能推荐

HTML 表单元素的基本样式

HTML 表单元素的基本样式 原创 ixygj197875 发布于2018-02-22 17:48:53 阅读数 2296 收藏 更新于2018-05-20 15:35:58 分类专栏: 揭秘 CSS 揭秘 CSS 收起 表单元素主要包括 label、input、textarea、select、datalist、******、progress、meter、output等,以及对表单元素进行分组的 ...

php输出语句

php输出语句 常见的输出语句 echo(): 可以一次输出多个值,多个值之间用逗号分隔。echo是语言结构(language construct),而并不是真正的函数,因此不能作为表达式的一部分使用。 print(): 函数print()打印一个值(它的参数),如果字符串成功显示则返回true,否则返回false。 print_r(): 可以把字符串和数字简单地打印出来,而数组则以括起来的键和值...

工厂模式

简介 常见的实例化对象模式。 用工厂方法替代new操作的一种模式。 当我们使用new操作实例化对象时,调用构造函数完成初始化。若初始化仅是进行赋值等简单的操作,写入构造函数即可。但如果初始化时需要执行一长串复杂的代码,将多个工作装入一个方法,是不妥的。 创建实例与使用实例分离。将创建实例所需的大量初始化工作从基类的构造函数中分离出去。 简单工厂模式、工厂方法模式针对的是一个产品等级结构;而抽象工厂...

B1105 Spiral Matrix (画图)

B1105 Spiral Matrix (25分) //第一次只拿了21分 矩阵的长和宽,求最大因子,从sqrt(num)开始枚举. 每次循环一次,s++,t--,d--,r++ 测试点四运行超时,是因为输入一个数字的时候,需要直接输出这个数字。//1分 测试点二运行超时,最后一个数字不必再while循环一次,直接输出即可。//3分 最后一个测试点卡了好久/(ㄒoㄒ)/~~ 螺旋矩阵...

Java基础=>String,StringBuffer与StringBuilder的区别

字符串常量池 什么是字符串常量池? JVM为了减少字符串对象的重复创建,其维护了一块特殊的内存,这段内存被称为字符串常量池(存储在方法区中)。 具体实现 当代码中出现字符串时,JVM首先会对其进行检查。 如果字符串常量池中存在相同内容的字符串对象,如果有,则不再创建,直接返回这个对象的地址返回。 如果字符串常量池中不存在相同内容的字符串对象,则创建一个新的字符串对象并放入常量池,并返回新创建的字符...

猜你喜欢

java调用其他java项目的Https接口

项目中是这样的: 用户拿出二维码展示,让机器识别二维码, 机器调用开门的后台系统接口, 然后开门的后台系统接口需要调用管理系统的接口, 管理系统需要判断能不能开门.这两个系统是互相独立的.当时使用http调用是没有问题的.当时后来要求必须用https.废话不说,直接代码: 我的项目中调用的是 HttpsUtils.Get(utlStr) 这个接口 开门系统接口如下图:   管理系统的接口...

Hadoop1.2.1全分布式模式配置

一 集群规划 主机名            IP                               安装的软件 &nbs...

Go语言gin框架的安装

尝试安装了一下gin,把遇到的一些小问题来记录一下 安装步骤 首先来看看官方文档,链接点这里 可以看到安装步骤很简单,就一句话 在命令行中输入这句话运行等待就好。 问题来了,因为墙的问题,go get会很慢,所以命令行里面半天什么反应也没有,不要急,慢慢等着就会看到gin-gonic/gin这个目录出现 这个时候命令行还是没有结束,表示还在下一些东西。有的时候可能心急的人就停了(比如我),然后写个...

uni-app表单组件二

input(输入框) 属性名 类型 说明 平台差异 value String 输入框的初始内容 type String input 的类型 password Boolean(默认false) 是否是密码类型 placeholder String 输入框为空时占位符 placeholder-style String 指定 placeholder 的样式 placeholder-class Strin...

深入理解 JavaScript 代码执行机制

深入理解 JavaScript 代码执行机制 前言 本文仅为个人见解,如有错误的地方欢迎留言区探讨和指正。 1、餐前甜品 如下是一段 JavaScript 代码,如果你毫不犹豫的说出代码执行顺序。那么请直接滚动到底部,留下你的足迹,接受膜拜。如果还不是很确定,那么请往下继续查看。 2、磨刀不误砍柴工(了解浏览器原理) (1) 进程和线程 进程是cpu资源分配的最小单位(是能拥有资源和独立运行的最小...