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

本人私人博客:Codewalking,大部分文章会现在博客上传,有不足之处欢迎指正。

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

1、重写父类方法

  • 描述:定义一个大学类,一个重点大学类继承大学类。在父类大学类中定义方法计算分数是否达到录取线,子类重点大学类重写父类方法,在主函数中输入三门成绩,调用重写的方法,判断总成绩是否达到录取线。总成绩大于等于180达到大学录取线,总成绩大于等于220达到重点大学录取线,否则达不到。
  • 代码
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、输入两个数、分别计算这两个数的积、和

  • 描述:在父类中定义求和方法和求积方法,子类继承父类并重写求积方法,在主函数中用子类调用这两个方法。输入两个数、分别计算这两个数的积、和。
  • 代码
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类型,输入一个数,调用子类的方法,打印输出这个数。
  • 代码
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的倍数
  • 代码
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调用父类构造方法,根据提示输入字符串,实例化一个子类对象并输出结果。
  • 代码
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,以及求圆面积的方法。输入半径的值,利用求圆面积方法计算面积,并输出结果。
  • 代码
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继承父类。实例化一个子类对象并向上转型,输入一个字符串和两个数字,父类对象调用子类的方法,打印输出字符串内容,和两个数字乘积。
  • 代码
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、对输入的字符进行打印

  • 描述:定义一个父类动物,子类猫、狗继承动物类。输入狗叫和猫叫的内容,利用多态,调用子类方法,输出狗猫叫的内容。
  • 代码
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,包含抽象类对象,以及调用抽象类的方法。获取输入的字符串,利用多态特性,分别调用两个子类的方法,打印输出字符串内容。
  • 代码
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卡的方法,和显示卡信息的方法。利用多态性质,输入移动卡手机号,然后输出卡类型和手机号;输入联通卡手机号,然后输出卡类型和和手机号。
  • 代码
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();
   }
}

文章转载请注明本人博客地址:
转载自:Codewalking - 【Java】Java学习笔记(4)——Java继承作业函数题

你可能感兴趣的:(练习)