5.4接口和抽象类

5.4.1实现抽象方法

描述:

已知抽象类Base中定义了calculate方法,该方法的计算过程依赖于sum()和avg(),而后两个方法均为抽象方法。要求定义Base的子类Sub类,并实现父类的抽象方法,使得main函数中的运算逻辑得以正确执行。

输入描述:

两个整数

输出描述:

两个整数的和除以两个整数的平均值(平均值为int类型,不考虑小数问题)
import java.util.Scanner;
public class Main { public static void main(String[] args) {
// Sub是需要你定义的子类
Base base = new Sub(); Scanner scanner = new Scanner(System.in);
while (scanner.hasNextInt()) {
int x = scanner.nextInt();
int y = scanner.nextInt();
base.setX(x);
base.setY(y);
System.out.println(base.calculate());
}
} } abstract class Base { private int x;
private int y; public int getX() {
return x;
} public void setX(int x) {
this.x = x;
} public int getY() {
return y;
} public void setY(int y) {
this.y = y;
} public int calculate() {
if (avg() == 0) {
return 0;
} else {
return sum() / avg();
}
} /**
* 返回x和y的和
*/
public abstract int sum(); /**
* 返回x和y的平均值
*/
public abstract int avg(); } class Sub extends Base { //write your code here......
public int sum(){
return super.getX() + super.getY();
}
public int avg(){
return sum() / 2;
}
}

5.4.2实现接口

描述

已知接口Comparator,内部定义了max函数,用于返回两个整数中的最大值。请定义该接口的实现类,使得main方法中的比较逻辑可以正确执行,要求实现类的名称为ComparatorImpl。

输入描述:

两个整数

输出描述:

两个整数中的最大值
 
import java.util.Scanner;

public class Main {
public static void main(String[] args) {
Comparator comparator = new ComparatorImpl(); Scanner scanner = new Scanner(System.in);
while (scanner.hasNextInt()) {
int x = scanner.nextInt();
int y = scanner.nextInt();
System.out.println(comparator.max(x, y));
}
} } interface Comparator {
/**
* 返回两个整数中的最大值
*/
int max(int x, int y);
}
//write your code here......
//继承关系中,子类中对父类的方法进行了重写@Override

class ComparatorImpl implements Comparator {
@Override
public int max(int x,int y){
return x > y ? x : y;
}
}

5.5final和static关键字

5.5.1 重写父类方法

描述

父类Base中定义了若干get方法,以及一个sum方法,sum方法是对一组数字的求和。请在子类 Sub 中重写 getX() 方法,使得 sum 方法返回结果为 x*10+y

输入描述:

整数

输出描述:

整数的和

示例1

输入:1 2;

输出:12;

import java.util.Scanner;
public class Main { public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while (scanner.hasNextInt()) {
int x = scanner.nextInt();
int y = scanner.nextInt();
Sub sub = new Sub(x, y);
System.out.println(sub.sum());
}
} } class Base { private int x;
private int y; public Base(int x, int y) {
this.x = x;
this.y = y;
} public int getX() {
return x;
} public final int getY() {
return y;
} public final int sum() {
return getX() + getY();
} } class Sub extends Base { public Sub(int x, int y) {
super(x, y);
}
//write your code here......
@Override
public int getX(){
return (super.getX())*10;
} }

5.5.2创建单例对象

描述

Singleton类是单例的,每次调用该类的getInstance()方法都将得到相同的实例,目前该类中这个方法尚未完成,请将其补充完整,使得main()函数中的判断返回真(不考虑线程安全)。

输入描述:

输出描述:

true
public class Main {

    public static void main(String[] args) {
Singleton s1 = Singleton.getInstance();
Singleton s2 = Singleton.getInstance();
System.out.println(s1 == s2);
}
} class Singleton { private static Singleton instance;
private Singleton() {
}
//write your code here......
public static Singleton getInstance(){
//如果为空,才进行实例化,保证一个类只有一个实例,存在线程安全的问题
if(instance==null){
instance=new Singleton();
}
return instance;
} }

java基础题(4)的更多相关文章

  1. Java基础题:集合、String、性能、线程

    转载自:Java基础题 https://yq.aliyun.com/articles/601786?utm_content=m_1000001149

  2. 【原创】这道Java基础题真的有坑!我也没想到还有续集。

    前情回顾 自从我上次发了<这道Java基础题真的有坑!我求求你,认真思考后再回答.>这篇文章后.我通过这样的一个行文结构: 解析了小马哥出的这道题,让大家明白了这题的坑在哪里,这题背后隐藏 ...

  3. java 基础题 很基础, 很有趣

    都是一些非常非常基础的题,是我最近参加各大IT公司笔试后靠记忆记下来的,经过整理献给与我一样参加各大IT校园招聘的同学们,纯考Java基础功底, 老手们就不用进来了,免得笑话我们这些未出校门的孩纸们, ...

  4. Java基础题

    问题: 1.请对比一下重载和重写的区别. 2.请对比一下接口和抽象类的异同. 3.写出一个单例模式,并说明其优点. 4.用过String.StringBuffer吗,说出他们的异同. 5.什么是值传递 ...

  5. 转载 java基础题(面试必知)

    1.面向对象的特征有哪些方面 1.抽象:抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面.抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节.抽象包 ...

  6. 这道Java基础题真的有坑!我求求你,认真思考后再回答。

    本文目录 一.题是什么题? 二.阿里Java开发规范. 2.1 正例代码. 2.2 反例代码. 三.层层揭秘,为什么发生异常了呢? 3.1 第一层:异常信息解读. 3.2 第二层:抛出异常的条件解读. ...

  7. 几个Java基础题

    1.java中线程能不能重复start t1.start();        System.out.println("ssss");        t1.start(); 答:第一 ...

  8. java基础题整理(1)

    1.使用length属性获取数组长度,使用length()获取字符串的长度: 2.public.private.protected.friendly区别 public表明该数据成员.成员函数是对所有用 ...

  9. java基础题集

    1.什么是java虚拟机?为什么java被称作是“平台无关的编程语言”? java虚拟机是一个可以执行java字节码的虚拟机进程.java源文件被编译成能被java虚拟机执行的字节码文件. java被 ...

  10. 从一道题看线程安全--牛客网Java基础题

    从一道题看线程安全 Java中的线程安全是什么: 就是线程同步的意思,就是当一个程序对一个线程安全的方法或者语句进行访问的时候,其他的不能再对他进行操作了,必须等到这次访问结束以后才能对这个线程安全的 ...

随机推荐

  1. Windows测试Hadoop报错解决

    错误1:HADOOP_HOME and hadoop.home.dir are unset 原因:没有在Windows配置环境变量 解决办法:配置环境变量:记得配置到bin目录 错误2:Could n ...

  2. Mxnet速查_CPU和GPU的mnist预测训练_模型导出_模型导入再预测_导出onnx并预测

    需要做点什么 方便广大烟酒生研究生.人工智障炼丹师算法工程师快速使用mxnet,所以特写此文章,默认使用者已有基本的深度学习概念.数据集概念. 系统环境 python 3.7.4 mxnet 1.9. ...

  3. 在Wireshark中使用过滤器——显示过滤器

    在Wireshark运行过程中选择搜索(Ctrl-F),第一个默认的搜索选项就是显示过滤器. 显示过滤器用于捕获文件,用来告诉Wireshark只显示那些符合过滤条件的数据包. 显示过滤器比捕获过滤器 ...

  4. 企业需要使用网络损伤仪 WANsim 的帮助,以便更高效地迁移到云端

    正确解决与云环境中的应用程序部署有关的问题需要针对每个系统的独特需求以寻找特定的网络工具.网络损伤仪 WANsim 助力企业更高效地迁移到云端! 起初,云厂商以在云端办公相对于传统方式拥有更高的可靠性 ...

  5. python3拉勾网爬虫之(您操作太频繁,请稍后访问)

    你是否经历过这个:那就对了~因为需要post和相关的cookie来请求~所以,一个简单的代码爬拉钩~~~

  6. DevC++ 报错[Error] Id returned 1 exit status

    DevC++ 报错[Error] Id returned 1 exit status 起因 学校机房的计算机总是二次编译总是报错 报错提示 [Error] Id returned 1 exit sta ...

  7. Educational Codeforces Round 119 (Div. 2), (C) BA-String硬着头皮做, 能做出来的

    题目链接 Problem - C - Codeforces 题目 Example input 3 2 4 3 a* 4 1 3 a**a 6 3 20 **a*** output abb abba b ...

  8. 使用Camera API https://developer.mozilla.org/zh-CN/docs/Web/Guide/API/Camera

    使用Camera API 在本文章中 获取到所拍摄照片的引用 在网页中展示图片 完整的示例代码 HTML页面: JavaScript文件: 浏览器兼容性 通过Camera API,你可以使用手机的摄像 ...

  9. 这3个免费PPT素材网站,一定要收藏

    制作PPT,这三个网站的素材绝对够用! 1.象刀设计 https://www.101dao.com 象刀设计里面有非常多PPT模板,这个网站也是主打PPT素材. 分类很清晰,需要什么风格的素材能快速找 ...

  10. JavaScript の querySelector 使用说明

    本文记录,JavaScript 中 querySelector 的使用方法.小白贡献,语失莫怪. // 两种 query 的 method (方法) document.querySelector(se ...