【Java】Java学习笔记(3)Java继承作业函数题

学校小学期Java课程的练习题,留个档便于以后需要时候有例子可以回忆,写的烂的地方请多多包含

1、重写父类方法

  • 描述:定义一个大学类,一个重点大学类继承大学类。在父类大学类中定义方法计算分数是否达到录取线,子类重点大学类重写父类方法,在主函数中输入三门成绩,调用重写的方法,判断总成绩是否达到录取线。总成绩大于等于180达到大学录取线,总成绩大于等于220达到重点大学录取线,否则达不到。
  • 代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
import java.util.Scanner;
class University {
/*
TODO:计算考试分数是否达到大学录取线
功能描述:计算数学、英语、语文成绩和,如果和大于等于180,则输出"考分"+total+"达到大学最低录取线",否则输出"考分"+total+"未达到大学最低录取线"
参数说明:math/english/chinese分别为数学、英语、语文成绩
返回值说明:无
*/
void enterRule(double math,double english,double chinese) {
double total=math+english+chinese;
if(total>=180){
System.out.println("考分"+total+"达到大学最低录取线");
}
else{
System.out.println("考分"+total+"未达到大学最低录取线");
}
}
}
class ImportantUniversity extends University{
/*
TODO:计算考分是否达到重点大学录取线
功能描述:计算数学、英语、语文成绩和,如果和大于等于220,则输出"考分"+total+"达到重点大学录取线",否则输出"考分"+total+"未达到重点大学录取线"
参数说明:math/english/chinese分别为数学、英语、语文成绩
返回值说明:无
*/
void enterRule(double math,double english,double chinese) {
double total=math+english+chinese;
if(total>=220){
System.out.println("考分"+total+"达到重点大学录取线");
}
else{
System.out.println("考分"+total+"未达到重点大学录取线");
}
}
}
public class Test{
public static void main(String args[]) {
System.out.println("请输入数学、英语、语文成绩");
Scanner scanner = new Scanner(System.in);
ImportantUniversity univer = new ImportantUniversity();
//TODO:调用重写的方法enterRule,输入三门成绩
univer.enterRule(scanner.nextDouble(),scanner.nextDouble(),scanner.nextDouble());
System.out.println("请输入数学、英语、语文成绩");
univer = new ImportantUniversity();
//TODO:调用重写的方法enterRule,输入三门成绩
univer.enterRule(scanner.nextDouble(),scanner.nextDouble(),scanner.nextDouble());
}
}

2、输入两个数、分别计算这两个数的积、和

  • 描述:在父类中定义求和方法和求积方法,子类继承父类并重写求积方法,在主函数中用子类调用这两个方法。输入两个数、分别计算这两个数的积、和。
  • 代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
import java.util.Scanner;
class A {
/*
TODO:求和方法
功能描述:计算两个float型输入的数之和
参数说明:float x,y分别为需要计算的两个数
返回值说明:两个参数的和
*/
float computer(float x,float y) {
return x+y;
}
/*
TODO:求和方法
功能描述:计算两个int型输入的数之和
参数说明:int x,y分别为需要计算的两个数
返回值说明:两个参数的和
*/
public int g(int x,int y) {
return x+y;
}
}
class B extends A {
/*
TODO:求乘积方法
功能描述:计算两个float型输入的数的乘积
参数说明:float x,y分别为需要计算的两个数
返回值说明:两个参数的乘积
*/
float computer (float x,float y) {
return x*y;
}
}
public class Example5_5 {
@SuppressWarnings("resource")
public static void main(String args[]) {
B b=new B();
System.out.println("请输入两个数计算乘");
Scanner scanner = new Scanner(System.in);
//TODO:b调用重写的方法computer,参数为两个float型的输入数,将结果赋值给result
float result=b.computer(scanner.nextFloat(),scanner.nextFloat());
System.out.println(result);
System.out.println("请输入两个数计算和");
//TODO:b调用继承的方法g,参数为两个int型的输入数,将结果赋值给m
int m=b.g(scanner.nextInt(),scanner.nextInt());
System.out.println(m);
}
}

3、对输入的数字进行打印

  • 描述:定义一个类A,包含一个返回空对象的方法。定义类B继承类A,父类方法的返回值为Object类型,子类重写方法可以返回父类的子类型。定义子类返回值为Integer类型,输入一个数,调用子类的方法,打印输出这个数。
  • 代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
import java.util.Scanner;
class A {
Object get() {
//TODO:返回一个空对象
return null;
}
}
class B extends A {
Integer get() {
System.out.println("请输入一个数");
/*
TODO:返回一个Integer对象
使用scanner输入一个整数,作为构造方法的参数
*/
Scanner scanner = new Scanner(System.in);
return new Integer(scanner.nextInt());
}
}
public class Example5_6 {
public static void main(String args[]) {
B b=new B();
Integer t=b.get();
System.out.println(t.intValue());
}
}

4、计算一个数的平均数和1/2倍数

  • 描述:定义一个父类Sum,一个子类Average继承Sum,子类使用super访问和调用隐藏的父类成员变量和方法,输入一个数n,计算1…n之和的平均数、2/1的倍数
  • 代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
import java.util.Scanner;
class Sum {
int n;
/*
TODO:求和方法
功能描述:计算1-n的和 循环计算:sum=sum+i 从1到n
参数说明:无
返回值说明:1-n的和
*/
float f() {
float sum=0;
for(float i=1;i<=n;i++){
sum=sum+i;
}
return sum;
}
}
class Average extends Sum {
int n;
/*
TODO:求平均数
功能描述:使用super关键字将本类n赋值给父类n,然后调用父类f方法计算和,在除以n求平均数
参数说明:无
返回值说明:平均数的值
*/
float f() {
super.n=n;
return super.f()/n;
}
/*
TODO:求1/2倍数
功能描述:调用父类f方法计算和,再求和的1/2倍数
参数说明:无
返回值说明:1/2倍数值
*/
float g() {
float temp=super.f()/2;
return temp;
}
}
public class Example5_7 {
public static void main(String args[]) {
Average aver=new Average();
System.out.println("请输入一个数n计算1..n和的平均数、2/1的倍数");
Scanner scanner = new Scanner(System.in);
aver.n = scanner.nextInt();
float resultOne=aver.f();
float resultTwo=aver.g();
System.out.println("resultOne="+resultOne);
System.out.println("resultTwo="+resultTwo);
}
}

5、对输入的字符串进行打印输出

  • 描述:定义一个父类Student,子类UniverStudent继承父类,使用super调用父类构造方法,根据提示输入字符串,实例化一个子类对象并输出结果。
  • 代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
import java.util.Scanner;
class Student {
int number;String name;
Student() {
}
/*
TODO:本地变量赋值并打印
功能描述:将形参赋值给本地变量,然后打印输出
参数说明:number,name赋值给本地变量number,name
返回值说明:无
*/
Student(int number,String name) {
this.number=number;
this.name=name;
System.out.println("我的名字是:" +name+ "学号是:"+number);
}
}
class UniverStudent extends Student {
String 婚否;
/*
TODO:本地变量赋值并打印
使用super调用父类构造方法,将形参传入,然后将b赋给本地变量,并打印输出
参数说明:number,name,b,分别为学号、姓名、婚否状态
返回值说明:无
*/
UniverStudent(int number,String name,String b) {
super(number,name);
婚否=b;
System.out.println("婚否="+b);
}
}
public class Example5_8 {
public static void main(String args[]) {
System.out.println("请输入姓名:");
Scanner scanner = new Scanner(System.in);
String next = scanner.next();
System.out.println("请输入年龄:");
int nextInt =scanner.nextInt();
System.out.println("请输入婚否:");
String next1 = scanner.next();
//TODO:初始化UniverStudent对象
UniverStudent stud= new UniverStudent(nextInt,next,next1);
}
}

6、计算圆面积

  • 描述:定义一个类A,包含常量PI,以及求圆面积的方法。输入半径的值,利用求圆面积方法计算面积,并输出结果。
  • 代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import java.util.Scanner;
class A {
final double PI=3.1415926;// PI是常量
/*
TODO:求圆面积
功能描述:根据计算圆面积的公式,编写代码,求出圆的面积
参数说明:r为半径
返回值说明:圆面积
*/
public double getArea(final double r) {
return PI*r*r;
}
}
public class Example5_9 {
public static void main(String args[]) {
A a=new A();
System.out.println("请输入圆半径:");
Scanner scanner = new Scanner(System.in);
System.out.println("面积:"+a.getArea(scanner.nextDouble()));
}
}

7、输入字符串和两个数字,打印字符串并计算两个数乘积

  • 描述:定义一个父类Anthropoid,子类People继承父类。实例化一个子类对象并向上转型,输入一个字符串和两个数字,父类对象调用子类的方法,打印输出字符串内容,和两个数字乘积。
  • 代码
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    import java.util.Scanner;
    class Anthropoid {
    void crySpeak(String s) {
    System.out.println(s);
    }
    }
    class People extends Anthropoid {
    void computer(int a,int b) {
    //TODO:计算a与b的乘积,然后打印输出该值
    System.out.println(a*b);
    }
    void crySpeak(String s) {
    System.out.println("***"+s+"***");
    }
    }
    public class Example5_10 {
    public static void main(String args[]) {
    Anthropoid monkey;
    People geng = new People();
    monkey = geng ; //monkey是People对象geng的上转型对象
    System.out.println("请输入字符串 ");
    Scanner scanner = new Scanner(System.in);
    monkey.crySpeak(scanner.next());
    //TODO:把上转型对象强制转化为子类的对象 将monkey转化为People
    People people=(People)monkey;
    System.out.println("请输入两个数字:");
    people.computer(scanner.nextInt(),scanner.nextInt());
    }
    }

8、对输入的字符进行打印

  • 描述:定义一个父类动物,子类猫、狗继承动物类。输入狗叫和猫叫的内容,利用多态,调用子类方法,输出狗猫叫的内容。
  • 代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
import java.util.Scanner;
class animal {
void cry(String call) {
}
}
class dog extends animal {
void cry(String call) {
System.out.println(call);
}
}
class cat extends animal {
void cry(String call) {
System.out.println(call);
}
}
public class Example5_11{
public static void main(String args[]) {
animal animal;
animal = new dog();
System.out.println("请输入狗叫:");
Scanner scanner = new Scanner(System.in);
/*
TODO:多态实现 使用animal调用cry方法
方法参数为键盘输入的内容
*/
animal.cry(scanner.next());
animal=new cat();
System.out.println("请输入猫叫:");
/*
TODO:多态实现 使用animal调用cry方法
方法参数为键盘输入的内容
*/
animal.cry(scanner.next());
}
}

9、对输入字符串打印

  • 描述:定义一个抽象类GirlFriend,包含两个抽象方法。定义两个子类继承抽象类并实现抽象方法,定义一个类Boy,包含抽象类对象,以及调用抽象类的方法。获取输入的字符串,利用多态特性,分别调用两个子类的方法,打印输出字符串内容。
  • 代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
import java.util.Scanner;
abstract class GirlFriend {
abstract void speak(Scanner scanner);
abstract void cooking(Scanner scanner);
}
class ChinaGirlFriend extends GirlFriend {
void speak(Scanner scanner){
System.out.println("请输入中国女孩说的话:");
System.out.println(scanner.next());
}
void cooking(Scanner scanner){
System.out.println("请输入中国女孩做的饭:");
System.out.println(scanner.next());
}
}
class AmericanGirlFriend extends GirlFriend {
void speak(Scanner scanner){
System.out.println("请输入美国女孩说的话:");
System.out.println(scanner.next());
}
void cooking(Scanner scanner){
System.out.println("请输入美国女孩做的饭:");
System.out.println(scanner.next());
}
}
class Boy {
GirlFriend friend;
Scanner scanner = new Scanner(System.in);
void setGirlfriend(GirlFriend f){
friend = f;
}
void showGirlFriend() {
friend.speak(scanner);
friend.cooking(scanner);
}
}
public class Example5_12 {
public static void main(String args[]) {
GirlFriend girl = new ChinaGirlFriend(); //girl是上转型对象
Boy boy = new Boy();
//TODO:boy调用setGirlfriend、showGirlFriend两个方法
boy.setGirlfriend(girl);
boy.showGirlFriend();
girl = new AmericanGirlFriend(); //girl是上转型对象
//TODO:boy调用setGirlfriend、showGirlFriend两个方法
boy.setGirlfriend(girl);
boy.showGirlFriend();
}
}

10、根据提示信息,输入移到、联通的手机号,然后输出卡的类型和手机号

  • 描述:定义一个抽象类SIM,定义中国移动类和中国联通类继承SIM,定义一个手机类,包含使用SIM卡的方法,和显示卡信息的方法。利用多态性质,输入移动卡手机号,然后输出卡类型和手机号;输入联通卡手机号,然后输出卡类型和和手机号。
  • 代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
import java.util.Scanner;
abstract class SIM {
public abstract void setNumber(String n);
public abstract String giveNumber();
public abstract String giveCorpName();
}
class SIMOfChinaMobile extends SIM {
String number;
public void setNumber(String n) {
number = n;
}
public String giveNumber() {
return number;
}
public String giveCorpName() {
return "中国移动";
}
}
class SIMOfChinaUnicom extends SIM {
String number;
public void setNumber(String n) {
number = n;
}
public String giveNumber() {
return number;
}
public String giveCorpName() {
return "联通";
}
}
class MobileTelephone {
SIM card;
public void useSIM(SIM card) {
this.card=card;
}
public void showMess() {
/*
TODO:打印输出卡号提供者和手机号码,即调用card的giveCorpName、giveNumber方法
输出格式为:
System.out.println("使用的卡是:"+ 提供者 +"提供的");
System.out.println("手机号码是:"+ 手机号码);
*/
System.out.println("使用的卡是:"+ card.giveCorpName() +"提供的");
System.out.println("手机号码是:"+ card.giveNumber());
}
}
public class Example5_13 {
public static void main(String args[]) {
MobileTelephone telephone = new MobileTelephone ();
SIM sim=new SIMOfChinaMobile();
Scanner scanner = new Scanner(System.in);
System.out.println("请输入移动卡手机号:");
/*
TODO:将输入的移动手机号设置为sim的number
然后手机使用这个sim
*/
sim.setNumber(scanner.next());
telephone.useSIM(sim);
telephone.showMess();
sim=new SIMOfChinaUnicom();
System.out.println("请输入联通手机号:");
/*
TODO:将输入的联通手机号设置为sim的number
然后手机使用这个sim
*/
sim.setNumber(scanner.next());
telephone.useSIM(sim);
telephone.showMess();
}
}
-------- 本文结束 感谢阅读 --------