java练习之abstract (抽象) final(最终) static(静态) 练习

1:分析总结:写出private、abstract、static、final之间能否联动使用,并写出分析原因

private static final 之间可以任意结合

abstract 不可以与private static final 结合使用

2:关于三个修饰符描述不正确的是(AD)

A. static 可以修饰所有类型的变量   不可以修饰局部变量,局部变量作用范围小,不是类变量

B. static 可以修饰方法 

C. final 可以修饰类

D. abstract 可以修饰类、方法、属性  不能修饰属性

3:下面关于 static 描述不正确的是(CD)

A. static 修饰的属性称为静态变量,被所有的对象共享

B. static 修饰的方法,可以直接用 类名.方法名(参数)调用

C. static 修饰的方法中可以直接访问本类的其他方法    非静态元素不能被静态元素调用

D. 父类中定义了 static 修饰的方法,子类中不能再定义同名的 static 方法

可以定义但是不是重写,多态中父类对象调用的还是父类中的方法

4:关于 final 描述错误的是(AB)

A. final 修饰的类是作用范围内常量,只允许一次赋值   作用范围是地址,地址不可更改,内容可以改

B. final 修饰的方法不能被继承   可以被继承,但不能被重写

C. final 修饰的方法不允许被覆盖

D. final 修饰的类没有子类

5:关于 abstract,以下选项正确的是:ABC

A. abstract 类中可以没有 abstract 方法

B. abstract 类的子类也可以是 abstract 类

C. abstract 类不能创建对象,但可以声明引用

D. abstract 方法不能有方法体

6:仔细阅读以下程序,写出程序输出的结果。

300 200 300 400

7:仔细阅读以下程序,选出哪些代码会导致程序出错()

A. //1  B. //2 C. //3  D. //4

E. //5  F. //6 G. //7  H. //8

8:仔细阅读以下程序,写出程序运行输出的结果。

In Static

MyClass()  

10

MyClass(int)

10

9:仔细阅读以下代码,关于代码描述正确的是()

A. 编译通过,输出 10

B. 编译不通过,把第 2 行改为 final int value = 10;

C. 编译不通过,把第 3 行改为 public MyClass(){ value = 10; }

D. 以上描述都不正确

10:仔细阅读以下代码,关于以下程序描述正确的是()

A. 编译不通过

B. 编译通过;在//1 处加上:mv.value = 200; 则编译不通过

C. 编译通过。如果在//1 处加上:mv = new MyValue(); 则编译不通过

D. 以上描述都不正确

11:仔细阅读以下代码,选出正确选项()

A. 编译通过  B. //1 出错 C. //2 出错

D. //3 出错 E. //4 出错

12:仔细阅读以下代码,代码中哪些内容是错误的()

  1. //1 B. //2 方法体 C. //3  方法重写权限修饰符只会等于或更大  D. //4

13:仔细阅读以下代码,程序是否能编译通过?如果可以,输出运行结果;如果不可以,应该怎样 修改?

可以

m1()  in super

m1(int)  in  sub

m1(double)  in sub

14:仔细阅读以下程序,写出程序运行输出的结果。

m1 in Super

m2 in Sub

m1 in Sub

m2 in Sub

15:下面关于方法声明正确的是(E)

A. abstract final void m()

B. public void final m()

C. static abstract void m()

D. private abstract void m()

E. public static final void m()

16:判断以下描述是否正确,正确填 T;否则填 F。

(1) abstract 可以修饰类、方法、属性(F

(2) 抽象类中不一定有构造方法(F)有,但是不能实例化

(3) 抽象类只能声明引用,不允许单独 new 对象(T

(4) 所有类中都可以定义抽象方法(F抽象方法必须在抽象类中

(5) 子类继承抽象类必须实现抽象类中所有抽象方法(T

(6) static 可以修饰属性、方法、代码块(T

(7) 静态属性只能用 类名.静态属性名 访问 (T

(8) 静态方法可以被本类中的其他方法直接访问(T

(9) 静态代码块在创建对象时完成静态属性的初始化工作(F类加载时

(10)final 只能修饰属性、方法、类(F)  局部变量

(11)final 修饰的方法不能被继承(F

(12)final 修饰的类不能被继承,即没有子类(T

17:把三大特性中的 形状类改为抽象类,并把其中的求周长和求面积的方法改为抽象方法。

package com.by.homework3.figure;

public abstract class Figure {
    public abstract void qiuzhouchang();
    public abstract void qiumianji();
}



package com.by.homework3.figure;

public class Circle extends Figure{
    int banjin;

    public Circle(int banjin) {
        this.banjin = banjin;
    }

    @Override
    public void qiuzhouchang() {
        Double zhouchang=2*3.14*banjin;
        System.out.println("圆的周长:"+zhouchang);
    }

    @Override
    public void qiumianji() {
        Double mianji=3.14*banjin*banjin;
        System.out.println("圆的面积:"+mianji);
    }
}



package com.by.homework3.figure;

import com.by.homework3.figure.Figure;

public class Rect extends Figure {
     int chang;
     int kuan;

    public Rect() {
    }

    public Rect(int chang,int kuan) {
        this.chang = chang;
        this.kuan=kuan;
    }

    @Override
    public void qiuzhouchang() {
        int zhouchang=chang*2+kuan*2;
        System.out.println("矩形的周长为:"+zhouchang);
    }

    @Override
    public void qiumianji() {
        int mianji=chang*kuan;
        System.out.println("矩形面积为:"+mianji);
    }
}



package com.by.homework3.figure;

public class Square extends Figure{
    int bianchang;

    public Square(){

    }
    public Square(int bianchang) {
        this.bianchang = bianchang;
    }

    public void qiuzhouchang(){
        int zhouchang=bianchang*4;
        System.out.println("正方形的周长:"+zhouchang);
    }
    public void qiumianji(){
        int mianji=bianchang*bianchang;
        System.out.println("正方形的面积:"+mianji);
    }
}

18:设计一个类 MyClass,为 MyClass 增加一个 count 属性,用来统计总共创建了多少个对象。

定义一个静态的count属性,无论哪个对象调用这个属性,静态元素只看最后改的那个数

package com.by.homework5;

class MyClass {
    public static int count=0;
    public MyClass(){
        count++;
    }
}

public class MyClassTest{
    public static void main(String[]args){
        MyClass myClass=new MyClass();
        MyClass myClass1=new MyClass();
        MyClass myClass2=new MyClass();
        MyClass myClass3=new MyClass();
        System.out.println(myClass3.count);
    }
}

19:定义一个类是员工,员工有id和name属性,有一个方法是eat,调用eat输出吃饭,有一 个抽象方法是work,不同的员工工作的内容不同,定义3个类,程序员, 老师,网管,分别调用work的时候输出
:”id为xx的name”写代码”,”讲课”,”拉网线”

package com.by.homework5;

abstract class Worker{
    private int id;
    private String name;

    public Worker() {
    }

    public Worker(int id, String name) {
        this.id = id;
        this.name = name;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public void eat(){
        System.out.println("吃饭方法");
    }
    public abstract void work();
}



class Programmer extends Worker{

    public Programmer() {
    }

    public Programmer(int id, String name) {
        super(id, name);
    }

    @Override
    public void eat() {
        super.eat();
    }

    @Override
    public void work() {
        System.out.println("写代码");
    }

}
class Teacher extends Worker{
    public Teacher() {
    }

    public Teacher(int id, String name) {
        super(id, name);
    }

    public void work(){
        System.out.println("讲课");
    }
}

class Management extends Worker{
    public Management() {
        super();
    }

    public Management(int id, String name) {
        super(id, name);
    }

    @Override
    public int getId() {
        return super.getId();
    }

    @Override
    public void setId(int id) {
        super.setId(id);
    }

    @Override
    public String getName() {
        return super.getName();
    }

    @Override
    public void setName(String name) {
        super.setName(name);
    }

    @Override
    public void eat() {
        super.eat();
    }

    @Override
    public void work() {
        System.out.println("拉网线");
    }
}


public class WorkerTest {
    public static void main(String[]args){
        Worker worker=new Programmer(111,"张三");
        System.out.println("id为"+worker.getId()+"的"+worker.getName());
        worker.work();
        Worker worker1=new Management(222,"李四");
        System.out.println("id为"+worker1.getId()+"的"+worker1.getName());
        worker1.work();
        Worker worker2=new Teacher(333,"王五");
        System.out.println("id为"+worker2.getId()+"的"+worker2.getName());
        worker2.work();
    }
}

20:代码填空

abstract  Super{

void m();

void m2();

}

class Sub extends Super{

//1.

}

abstract Sub1 extends Super{

//2.

}

1:void m(){}

void m2(){}

2: void m();

void m2();

21:设计一个抽象类,并演示它的三级使用

抽象类 Teacher,有两个方法teach(),add(int a,int b)

抽象子类 MathTeacher,继承于Teacher类,有一个方法teachMath();

第三级类 RealMathTeacher,继承于MathTeacher,有两个方法TeachHightMath(),add(int a,int b);

在主函数中,声明Teacher类引用,并且调用add方法

package com.by.homework5;

abstract class Teacher1{
    public int a;
    public int b;
    public  void taech(){};
    public abstract void add(int a,int b);
}



abstract class MathTeacher extends Teacher1{
    public  void teachMath(){};
}



class RealMathTeacher extends MathTeacher{
    public void teachHighMath(){
        System.out.println("教高数");
    }
    @Override
    public void add(int a, int b) {
        int sum=a+b;
        System.out.println("子类add方法"+sum);
    }
}



public class TeacherTest {
    public  static void main(String[]args){
        Teacher1 teacher1=new RealMathTeacher();
        RealMathTeacher r=(RealMathTeacher) teacher1;
        r.add(3,4);

    }

}

22:假如我们在开发一个系统时需要对员工类进行设计,员工包含3个属性,姓名、工号以及工资。

经理也是员工,除了含有员工的属性外,另外还有一个奖金属性。

请使用继承的思想设计出员工类和经理类。要求类中提供必要的方法进行属性访问。

分析:

普通员工类,

变量:姓名、工号以及工资

方法:工作

经理类:

变量:姓名、工号以及工资,奖金属性

方法:工作

编写相应测试类进行测试

package com.by.homework5;

class Employer{
    private String name;
    private String id;
    private double salary;

    public Employer() {
    }

    public Employer(String name, String id, double salary) {
        this.name = name;
        this.id = id;
        this.salary = salary;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public double getSalary() {
        return salary;
    }

    public void setSalary(double salary) {
        this.salary = salary;
    }
}

class Manager extends Employer{
    private String  bonus;
    public Manager(){}

    public Manager(String bonus) {
        this.bonus = bonus;
    }

    public Manager(String name, String id, double salary, String bonus) {
        super(name, id, salary);
        this.bonus = bonus;
    }


    public String getBonus() {
        return bonus;
    }

    public void setBonus(String bonus) {
        this.bonus = bonus;
    }
}


public class Employee {
    public static void main(String[]args){
        Manager manager=new Manager("张三","123",15000,"2000");
        System.out.println(manager.getName()+manager.getId()+manager.getSalary()+manager.getBonus());
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/270534.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

实习知识整理8:如何实现将商品加入购物车

情景分析:当我们进入商品详情页面时,一般会有两个按钮,一个是加入购物车,另一个是直接购买的按钮,我们先来看看加入购物车是如何实现的 1. 数据库表分析 需要3个表:商品表item、用户表user、购物车表cart 需…

基于JAVA的医院门诊预约挂号系统 开源项目

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 功能性需求2.1.1 数据中心模块2.1.2 科室医生档案模块2.1.3 预约挂号模块2.1.4 医院时政模块 2.2 可行性分析2.2.1 可靠性2.2.2 易用性2.2.3 维护性 三、数据库设计3.1 用户表3.2 科室档案表3.3 医生档案表3.4 医生放号…

Autosar CAN开发05(从实际应用认识CAN波特率)

建议同时阅读本专栏的: Autosar CAN开发03(从实际应用认识CAN总线的物理层) Autosar CAN开发04(从实际应用认识CAN报文) Autosar CAN开发05(从实际应用认识CAN波特率) 前言 当知道了CAN的物…

STM32MP157D-DK1开发板Qt镜像构建

上篇介绍了STM32MP57-DK1开发板官方系统的烧录。那个系统包含Linux系统的基础功能,如果要进行Qt开发,还需要重新构建带有Qt功能的镜像 本篇就来介绍如何构建带有Qt功能的系统镜像,并在开发板中烧录构建的镜像。 1 Distribution包的构建 ST…

优化模型:MATLAB整数规划

一、整数规划介绍 1.1 整数规划的定义 若规划模型的所有决策变量只能取整数时,称为整数规划。若在线性规划模型中,变量限制为整数,则称为整数线性规划。 1.2 整数规划的分类 整数规划模型大致可分为两类: (1&…

HAL库的常用库函数(根据学习而更新)

目录 一、常用的GPIO相关HAL库函数 1、GPIO的初始化 2、配置GPIO引脚输出电平 3、切换指定引脚的电平,电平的翻转 4、读取指定GPIO引脚的电平 5、结构体 GPIO_InitTypeDef (引脚)定义: 6、高低电平的表示 7、延时函数&…

Java架构师系统架构需求分析实战

目录 1 导语2 需求分析实战3 核心方法论-架构立方体4 功能性模型-模块定义5 功能性模型-模块关系图6 功能性模型-模块细化 想学习架构师构建流程请跳转:Java架构师系统架构设计 1 导语 架构设计的实战和思维方法的讨论,主要聚焦于需求分析的重要性和方…

buuctf-Misc 题目解答分解97-99

97.[BSidesSF2019]zippy 下载完就是一个流量包 追踪tcp nc -l -p 4445 > flag.zip unzip -P supercomplexpassword flag.zip Archive: flag.zip 压缩包密码 supercomplexpassword 保存为 flag.zip 解压得到flag 98.[GUET-CTF2019]虚假的压缩包 先从虚假的压缩包入手 &am…

逆向P1P2总结

字节八位 word 16位 deword 32 位 00 00 00 e8 是存储32位信息的起点 不是程序运行的起点 为什么电脑有32位与64位之分 寻址宽度 以字节为单位 0xfffffff 1 就是最大容量 转为十进制为 4294967296 / 1024 (k)/1024 (kb)/ 1…

软件测试面试八股文——基础篇

5)错误推测法:是基于经验和直觉推测程序中所有可能存在的各种错误,从而有针对性的设计测试用例的方法 6)正交实验法 7)判定表法 8)测试大纲法 3、提交缺陷的八大要素 1)缺陷编号&#xff1a…

数据通信网络基础华为ICT网络赛道

目录 前言: 1.网络与通信 2.网络类型与网络拓扑 3.网络工程与网络工程师 前言: 数据通信网络基础是通信领域的基本概念,涉及数据传输、路由交换、网络安全等方面的知识。华为ICT网络赛道则是华为公司提出的一种技术路径,旨在通…

合并的单元格如何填充连续的序号

希望你以后碰到合并的单元格,不在一个个输入序号,用以下操作帮你输入连续的序号。 一、操作过程如下 1.有一个基准的单元格在同一列,而且这个基准单元格必须得是序号为1的单元格的上面的一个单元格,这样的话后面才能自动递增&am…

Cesium.js三维地图的实现(依托天地图CDN文件)

零、技术选型: Vue2、VueCli5、天地图、Cesium.js 一、通过天地图官网案例实现 需要引入天地图官方提供的CDN链接访问Cesium.js相关文件 相关文件: https://api.tianditu.gov.cn/cdn/demo/sanwei/static/cesium/Cesium.js https://api.tianditu.gov.cn/…

大数据技术学习笔记(十一)—— Flume

目录 1 Flume 概述1.1 Flume 定义1.2 Flume 基础架构 2 Flume 安装3 Flume 入门案例3.1 监控端口数据3.2 实时监控单个追加文件3.3 实时监控目录下多个新文件3.4 实时监控目录下的多个追加文件 4 Flume 进阶4.1 Flume 事务4.2 Flume Agent 内部原理4.3 Flume 拓扑结构4.3.1 简单…

PyQt5和Qt designer的详细安装教程

Qt designer界面和所有组件功能的详细介绍参考:https://blog.csdn.net/qq_43811536/article/details/135186862?spm1001.2014.3001.5501 目录 0. 写在前面1. Anaconda创建虚拟环境2. 安装PyQt5和Qt designer3. 测试安装成功 0. 写在前面 Qt Designer是Qt提供的一种…

智慧互联网银行引领金融变革,开源网安VulHunter护航数字化发展

某银行作为国内知名的互联网银行,以构建“智慧型互联行”为总体战略目标,始终坚持科技赋能金融的理念。通过AI、大数据、云计算等数字技术与金融业务的探索融合,实现以更低的成本为客户提供便捷、高效和优质体验的互联网金融服务。 架构升级助…

操作无法完成(错误 0x000006ba),Windows 11 PDF打印机无法使用解决办法

操作无法完成(错误 0x000006ba),Windows 11 PDF打印机无法使用解决办法 解决方式一 先重启一次电脑,看看是否可以解决问题。 解决方式二 重新启动 Printer Spooler 服务

【JAVA】黑马MybatisPlus 学习笔记【三】【拓展功能】

3.扩展功能 3.1.代码生成 在使用MybatisPlus以后,基础的Mapper、Service、PO代码相对固定,重复编写也比较麻烦。因此MybatisPlus官方提供了代码生成器根据数据库表结构生成PO、Mapper、Service等相关代码。只不过代码生成器同样要编码使用,…

【QT】可执行文件图标由png格式手动改为ico格式,Qt程序报错原因及解决方案

1问题说明: 在修改可执行文件图标时,由png格式手动改为ico格式,Qt程序会报错。 报错如下: 2解决办法: 登录网页 在线生成透明ICO图标——ICO图标制作,利用ico在线生成透明ICO图标 将生成的ico图标由favicon…

CSRF(Pikachu)

CSRF(get) 首先我们先登录账号 admin 密码是;123456 点击修改个人信息 用F12或者BP 抓包看看我们的url 那么构成的CSRF攻击payload为http://pikachu.shifa23.com/pikachu/vul/csrf/csrfget/csrf_get_edit.php?sexboy&phonenum”手机…
最新文章