Scala 编程题四 继承

1.题目如下

封装,定义setter和getter方法用于存值和取值

定义人类Person,
(1)字段:身份证号idCard,姓名name,性别gender,年龄age,职业profession,联系方式phone.
并定义相应的属性;
(2)定义方法message()输出个人的基本信息
(3)定义无参构造函数,并打印一句话,输出“我是人类”

定义一个教师类Teacher,继承于人类;
(a)具有字段:职工号empID,所教授的课程名curriculum,所属院系academy,并定义相应的属性
(b)定义有参和无参构造函数。
(c)定义一个普通方法teach(),输出我是教学的.

定义一个数学教师类MathTeacher,继承于教师类;
(a)重写父类的teach();输出我是从事数学教学的;
(b)定义无参构造函数。再写一个带参数的构成函数MathTeacher(String name)
(c)有两个重载方法,ready(),ready(String scource);

定义一个英语教师类EnglishTeacher,继承于教师类;
(a)重写父类的teach();输出我是从事英语教学的。
(b)定义无参构造函数。再写一个带参数的构成函数EnglishTeacher(String name),并显式调用父类的带参构造方法
(c)有两个重载方法,write(),write(String scource);

代码:

1.定义人类Person

package mx2.Demo.word

import scala.beans.BeanProperty

/**一、
 * 定义人类Person,
 * (1)字段:身份证号idCard,姓名name,性别gender,年龄age,职业profession,联系方式phone. 并定义相应的属性;
 * (2)定义方法message()输出个人的基本信息
 * (3)定义无参构造函数,并打印一句话,输出“我是人类”
 */
class Person2 {

  println("我是人类")
  @BeanProperty
  var idCard:String = _//身份证号

  @BeanProperty
  var name:String = _//姓名

  @BeanProperty
  var gender:Char = _//性别

  @BeanProperty
  var age:Int = _//年龄

  @BeanProperty
  var profession:String=_//职业

  @BeanProperty
  var phone:Int = _//联系方式

  def message(): Unit ={
    println("身份证号"+idCard+"姓名"+name+"性别"+gender+"年龄"+age+"职业"+profession+phone)
  }


}

2.教师类Teacher

package mx2.Demo.word

import scala.beans.BeanProperty

class Teacher1 extends Person2(){

  def this(empID:String,curriculum:String,academy:String){
    this()
    this.empID = empID
    this.curriculum = curriculum
    this.academy = academy
  }

  @BeanProperty
  var empID:String = _ //职工号

  @BeanProperty
  var curriculum:String = _//课程名

  @BeanProperty
  var academy:String = _//院系



  def teach(): Unit ={
    print("我是教学的")
  }

}

3.数学教师类MathTeacher

package mx2.Demo.word

/***
 *定义一个数学教师类MathTeacher,继承于教师类;
(a)重写父类的teach();输出我是从事数学教学的;
(b)定义无参构造函数。再写一个带参数的构成函数MathTeacher(String name)
(c)有两个重载方法,ready(),ready(String source);
 */
class MathTeacher extends Teacher1{

  def this(name:String){
    this()
    this.name = name
  }
  override def teach(): Unit ={
    println("我是从事数学教学的")
  }


  def ready(): Unit ={
    print("我在教学生读")
  }
  def ready(source:String): Unit ={
    print("我在"+source+"教学生读")
  }

}

4.英语教师类EnglishTeacher

package mx2.Demo.word

class EnglishTeacher extends Teacher1 {

  def this(name:String){
    this()

  }
  override def teach(): Unit ={
    println("我是从事英语教学的")
  }


  def write(): Unit ={
    println("我在教学生们写")
  }
  def write(source:String): Unit ={
    println("我在"+source+"教学生读")
  }

}

5.测试类

object Test{
  def main(args: Array[String]): Unit = {
    var englishTeacher = new EnglishTeacher("李四")
    englishTeacher.teach()
    englishTeacher.write()
  }
}

运行结果:

我是人类
我是从事英语教学的
我在教学生们写

 2.模拟计算器

定义为Number类,其中有两个整型数据成员n1和n2,应声明为私有。编写有参和无参构造方法,初始化n1和n2的值,再为该类定义加、减、乘、除等公有成员方法,分别对两个变量执行加减乘除的运算,并将其值输出。要求在主方法中判断输入的n1和n2的值是否为正整数,如果是正整数则进行计算,否则提示“请输入两个正整数”并让用户重新输入
测试类:要求从控制台输入两个数据,使用模拟计算器分别计算出加减乘除的值

代码:

package mx2.Demo.work

import scala.io.StdIn

/**
 * @program: IntelliJ IDEA
 * @description: 二、模拟计算器
 */

/***
 * 二、模拟计算器
 * 定义为Number类,其中有两个整型数据成员n1和n2,应声明为私有。编写有参和无参构造方法,初始化n1和n2的值,再为该类定义加、减、乘、除等公有成员方法,分别对两个变量执行加减乘除的运算,并将其值输出。要求在主方法中判断输入的n1和n2的值是否为正整数,如果是正整数则进行计算,否则提示“请输入两个正整数”并让用户重新输入
测试类:要求从控制台输入两个数据,使用模拟计算器分别计算出加减乘除的值
 */
class Number {

  private var n1:Int = _
  private var n2:Int = _

  def this(n1:Int,n2:Int){
    this()
    this.n1 = n1
    this.n2 = n2
  }

  def plus(): Int={
    n1+n2
  }

  def minus(): Int ={
    n1 -n2
  }
  def ride(): Int ={
    n1 * n2
  }
  def divide(): Int ={
    n1 / n2
  }

}

object NumberTest{
  def main(args: Array[String]): Unit = {
    var result = true
    var n1 = ""
    var n2 = ""
      while(result){
      var flag1 = true
      var flag2 = true
      print("请输入第一个数")
      n1 = StdIn.readLine()
      print("请输入第二个数")
      n2 = StdIn.readLine()
      var charN1 = n1.toCharArray
      var charN2 = n2.toCharArray

      for(x <- charN1){
        if(Character.isDigit(x) == false){
          flag1 = false
        }
      }
      for(x <- charN2){
        if(Character.isDigit(x) == false){
          flag2 = false
        }
      }
      if(flag1 == false || flag2 == false){
        print("输入的不是数字")
      }else{
        result = false
      }
    }

    print("请输入要操作的运算")
    var mul = StdIn.readChar()
    var num = new Number(n1.toInt,n2.toInt)
    if(mul == '+'){
      print("和为"+num.plus())
    }else if(mul == '-'){
      print("差为"+num.minus())
    }else if(mul == '*'){
      print("积为"+num.ride())
    }else if(mul == '/'){
      print("除为"+num.divide())
    }

  }
}

 运行结果:

请输入第一个数1
请输入第二个数2
请输入要操作的运算+
和为3

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lambda-小张

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值