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

news2024/9/24 3:26:18

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.coloradmin.cn/o/1335225.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

STM32单片机入门学习(七)-外部中断-光敏计数

光敏传感器模块: 光敏传感模块一DO端接B14,GND接GND,VCC接VCC,AO不接。 OLED: OLED:SCL接B12,SDA接B13 如图: main.c #include "stm32f10x.h" #include "Delay.h" //delay函数所在头文件 #include "OLED.…

自媒体实战篇:剪辑软件应用与实操

剪辑软件应用与实操 剪映基础界面认识 素材面板 导入本地素材,剪映自带素材库,音频,文本等素材合集面板播放预览 预览本地素材,,剪映自带素材库以及时间线面板中的素材的实时效果时间线面板 对素材进行基础的编辑操作,调整素材轨道等素材功能面板 可对素材或者文本等精细…

使用 Amazon CodeCatalyst 中的生成式 AI 助手 Amazon Q 提高开发人员的工作效率(预览版)

今天,我很荣幸能够向各位介绍 Amazon CodeCatalyst 中可用的新型生成式 AI 助手 Amazon Q, 主要用于加速软件分发。 加速软件功能开发 – Amazon Q 的这项功能开发技术可以帮助您快速地完成软件开发任务,例如添加注释和 README、优化问题描述…

AspectJ入门(一)

AspectJ是一个面向切面的框架,扩展了Java语言。有一个专门的编译器用来生成遵守Java字节编码规范的Class文件。Spring的AOP底层也是用了这个框架。 AOP可以拦截指定的方法并对方法增强,而且无需侵入到业务代码中,使业务与非业务处理逻辑分离…

PortSwigger Access Control

lab1: Unprotected admin functionality 访问robots.txt 进了删除即可 lab2: Unprotected admin functionality with unpredictable URL 访问admin-d0qwj5 lab3: User role controlled by request parameter 发现Cookie中存在判断是否为admin lab4: User role can be modifie…

C#教程(五):枚举

1、什么是枚举 枚举(Enum)是一种用于定义命名常量集合的数据类型。它允许开发人员创建一个命名的整数常量集合,这些常量可以在代码中代表特定的值。 2、示例 以下是一个简单的枚举示例: // 定义一个枚举类型 enum DaysOfWeek …

9道软件测试面试题,刷掉90%的测试程序员

经历了“金9银10”,转眼2024年招聘季就要来了,没点真本事真技术,没点面试经验,不了解点职场套路,如何过五关斩六将?如何打败面试官?如何拿下那梦寐以求的offer? 如果你的跳槽意向已…

8.15 PowerBI系列之DAX函数专题-找出无购买行为的客户

需求 实现 isempty var v_table1 filter(产品表,产品表[商品类别]"furniture") var v_table2 filter(产品表,产品表[商品类别]"XXXX") return isempty(v_table1) //return isempty(v_tabble1) //检查表是否为空 // return countrows(v_table1) //返回非…

50个免费的 AI 工具,提升工作效率(附网址)

上次我们已经介绍了20个精选的提高工作效率的免费AI工具,但如果你觉得这些AI工具还不过瘾的话,想进一步成为职场中最了解AI的人,本文将汇总介绍免费最新的50个AI工具。 DeepSwap DeepSwap 是一个基于 AI 的工具,适用于想要制作令人…

2023航天推进理论基础考试划重点(W老师)绪论固体推进剂

1、推进系统的分类: 按工作原理分, 直接反作用发动机(喷气发动机) 火箭发动机、组合发动机、冲压发动机、涡轮喷气发动机、涡轮风扇发动机 间接反作用发动机 活塞式发动机、涡轮螺旋桨发动机、涡轮轴发动机、航空电动机 2、后面不细讲的火箭发动机要…

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

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

ts相关笔记(extends、infer、Pick、Omit)

最近刷了本ts小册,对一些知识点做下笔记。 extends extends 是一个关键字,用于对类型参数做一些约束。 A extends B 意味着 A 是 B 的子类型,比如下面是成立的 ‘abc’ extends string599 extends number 看下面例子: type …

枚举(蓝桥杯备赛系列)acwing版

枚举 前言 hello,大家好,前面一段时间已经是把acwing Linux基础课讲完了,其实那些内容完全可以带领小白入门Linux我说过如果有人留言要Linux和Windows server 配置DNS Web ftp 的内容我就做一期,但是没人留言我也就先不自作多情了…

ComfyUI激活中文

comfyui中文地址如下: https://github.com/AIGODLIKE/AIGODLIKE-ComfyUI-Translationhttps://github.com/AIGODLIKE/AIGODLIKE-ComfyUI-Translation如何安装? 1. git安装 进入项目目录下的custom_nodes目录下,然后进入控制台,运…

【Flutter】黑白图片

一、将图片处理成黑白图片 //第一种方法CachedNetworkImage(imageUrl: imageUrl,width: 80,height: 80,fit: BoxFit.cover,color: Colors.black,//目标颜色colorBlendMode: BlendMode.color,//颜色混合模式)//第二种方法ShaderMask(shaderCallback: (Rect bounds) {return Lin…

ESP32通过PWM方波驱动蜂鸣器

摘要:本文介绍一下有源蜂鸣器和无源蜂鸣器的区别,然后给出两种驱动蜂鸣器的方式。 从外观上来看,无源蜂鸣器和有源蜂鸣器的区别主要有以下几个方面: 1.无源蜂鸣器比较“矮”,有源蜂鸣器比较“高”; 2.无源…

【方案】如何利用大数据+云计算技术打造智能环境监控系统?

小编在之前的文章中也提到过基于云计算的环境智能监控系统是什么样的,收到了很多朋友的关注,今天小编就再次根据智能监控为切入点,深入讲解智能环境监控系统方案的详细落实。 1、传感器节点:首先需要选择适合应用场景的各类传感器…

【开放集检测】OpenGAN: Open-Set Recognition via Open Data Generation 论文阅读

文章目录 英语积累为什么使用GAN系列网络进行开放集检测摘要1. 前言2. 相关工作开集检测基于GAN网络的开集检测基于暴露异常数据的开集检测 3. OpenGAN3.1 公式建模3.1.1 二分类方法存在问题如何解决 3.1.2 使用合成数据存在问题如何解决 3.1.3 OpenGAN3.1.4 模型验证 3.2 先前…

OpenEuler安装内网穿透工具实现ssh连接openEuler系统

文章目录 1. 本地SSH连接测试2. openEuler安装Cpolar3. 配置 SSH公网地址4. 公网远程SSH连接5. 固定连接SSH公网地址6. SSH固定地址连接测试 本文主要介绍在openEuler中安装Cpolar内网穿透工具实现远程也可以ssh 连接openEuler系统使用. 欧拉操作系统(openEuler, 简称“欧拉”…

BUUCTF——Reverse——helloword

1、题目 2、工具 JADX-GUI:安卓逆向工具,可以打开.apk、.dex、.jar、.zip等格式的文件。下载地址:JADX download | SourceForge.net 下载的JADX是一个.exe执行文件,打开会自动检查环境,要求有Java环境,点击…