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;}@Overridepublic void qiuzhouchang() {Double zhouchang=2*3.14*banjin;System.out.println("圆的周长:"+zhouchang);}@Overridepublic 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;}@Overridepublic void qiuzhouchang() {int zhouchang=chang*2+kuan*2;System.out.println("矩形的周长为:"+zhouchang);}@Overridepublic 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);}@Overridepublic void eat() {super.eat();}@Overridepublic 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);}@Overridepublic int getId() {return super.getId();}@Overridepublic void setId(int id) {super.setId(id);}@Overridepublic String getName() {return super.getName();}@Overridepublic void setName(String name) {super.setName(name);}@Overridepublic void eat() {super.eat();}@Overridepublic 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("教高数");}@Overridepublic 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.mzph.cn/news/578082.shtml

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

相关文章

Linux操作系统基础知识点

Linux是一种计算机操作系统,其内核由林纳斯本纳第克特托瓦兹(Linus Benedict Torvalds)于1991年首次发布。Linux操作系统通常与GNU套件一起使用,因此也被称为GNU/Linux。它是一种类UNIX的操作系统,设计为多用户、多任务…

计算机组成原理综合6

补码表示: X:1111 1111 1111 1101 Y:1111 1111 1101 1111 Z:0111 1111 1111 1100 转原码表示:从右往左找第一个“1”,左边的所有数值位按位取反 X:1111 1111 1111 1101 1000 0000 00…

常用的快捷键

快捷键能大大提高使用计算机时的效率。以下是一些常用的快捷键,适用于多种操作系统和应用程序: 通用快捷键 复制: Ctrl C (Windows/Linux) | Cmd C (Mac) 粘贴: Ctrl V (Windows/Linux) | Cmd V (Mac) 剪切: Ctrl X (Windows/Linux) | Cmd X (Ma…

Fiber Node的数据结构,以及如何在Reconciliation阶段被使用。

首先,Fiber Node是React用来描述组件树的数据结构,每一个React组件都对应一个Fiber Node。下面是一个Fiber Node的基本结构: const fiber {// 标识这个Fiber Node的类型(函数组件,类组件,DOM节点类型等&a…

OGG-MySQL无法正常同步数据问题分析

问题背景: 用户通过OGG从源端一个MySQL从库将数据同步到目标端的另一个MySQL数据库里面,后面由于源端的从库出现了长时间的同步延时,由于延时差距过大最后选择通过重建从库方式进行了修复 从库重建之后,源端的OGG出现了报错ERROR OGG-0014…

45.常用shell之 unset - 删除环境变量或函数 的用法及衍生用法

unset 是一个在类 Unix 系统的 shell 中常用的命令,用于删除环境变量或 shell 函数。这个命令可以帮助用户管理环境变量,防止不必要的变量干扰或占用资源。以下是 unset 命令的基本用法和一些衍生用法的示例: 基本用法 删除环境变量: unset …

java基础之Java的动态代理如何实现

Java实现动态代理的两种方式 JDK动态代理:Java.lang.reflect 包中的Proxy类和InvocationHandler接口提供了生成动态代理类的能力。Cglib动态代理:Cglib (Code Generation Library )是一个第三方代码生成类库,运行时在内存中动态生成一个子类对…

【Qt-QString】

Qt编程指南 ■ QString■ 编码方式■ 下划线■ 制表符■ arg■ arg 数值转字符串补齐长度■ QString 转换为 char■ QString 转换为 char *■ char * 转换为 QString■ char[] 转换为QString■ char[] 转换为QString■ QByteArray 转换为 QString ■ QByteArray■ QByteArray::…

关于Sneaky DogeRAT特洛伊木马病毒网络攻击的动态情报

一、基本内容 作为复杂恶意软件活动的一部分,一种名为DogeRAT的新开源远程访问特洛伊木马(RAT)主要针对位于印度的安卓用户发动了网络安全攻击。该恶意软件通过分享Opera Mini、OpenAI ChatGOT以及YouTube、Netfilx和Instagram的高级版本等合…

《PySpark大数据分析实战》-19.NumPy介绍ndarray介绍

📋 博主简介 💖 作者简介:大家好,我是wux_labs。😜 热衷于各种主流技术,热爱数据科学、机器学习、云计算、人工智能。 通过了TiDB数据库专员(PCTA)、TiDB数据库专家(PCTP…

饥荒Mod 开发(二三):显示物品栏详细信息

饥荒Mod 开发(二二):显示物品信息 源码 前一篇介绍了如何获取 鼠标悬浮物品的信息,这一片介绍如何获取 物品栏的详细信息。 拦截 inventorybar 和 itemtile等设置字符串方法 在modmain.lua 文件中放入下面代码即可实现鼠标悬浮到 物品栏显示物品详细信…

适合引流源码声音鉴定神器网站源码,轻松吸引用户关注

源码介绍 声鉴卡HTML5网页源码,完整可运转,调用wx录音,自动判断声音属性,输出结果 安装教程 只需要把源码上传至主机空间就可以 支持上传二级目录访问!提示一下:wxvx打开效果是最佳的源码里面生成二维码…

测试服务器带宽(ubuntu)

apt install python3 python3-pippip3 install speedtest-clispeestest-cli

Debezium发布历史27

原文地址: https://debezium.io/blog/2018/01/25/debezium-0-7-2-released/ 欢迎关注留言,我是收集整理小能手,工具翻译,仅供参考,笔芯笔芯. Debezium 0.7.2 发布 一月 25, 2018 作者: Gunnar Morling 发…

Hive05_DML 操作

1 DML 数据操作 1.1 数据导入 1.1.1 向表中装载数据(Load) 1)语法 hive> load data [local] inpath 数据的 path [overwrite] into table student [partition (partcol1val1,…)];(1)load data:表示加载数据 &…

数据库添加/删除/修改表字段

目录 添加表字段 删除表字段 修改表字段 添加表字段 要在数据库中添加表字段,可以使用ALTER TABLE语句。 语法如下: ALTER TABLE table_name ADD column_name datatype;其中,table_name是要添加字段的表名,column_name是要添…

目标:三年内练就一口流利的英语

置顶,不删。三年后的今天来评论区分享学习成果

wpf-MVVM绑定时可能出现的内存泄漏问题

文章速览 引言错误示范示例1示例2 坚持记录实属不易&#xff0c;希望友善多金的码友能够随手点一个赞。 共同创建氛围更加良好的开发者社区&#xff01; 谢谢~ 引言 正确结构&#xff1a; Model <——> ViewModel <——> View 但很多时候&#xff0c;很容易出现…

前端---表单标签

1. 表单的介绍 表单用于搜集不同类型的用户输入(用户输入的数据)&#xff0c;然后可以把用户数据提交到web服务器 。 2. 表单相关标签的使用 <form>标签 表示表单标签&#xff0c;定义整体的表单区域 <label>标签 表示表单元素的文字标注标签&#xff0c;定义文字…

lodash源码分析每日一练 - 数组 - fromPairs

今日分享&#xff1a; 每一步都是曼妙的风景~ _.fromPairs(pairs) 使用&#xff1a; 这个方法返回一个由键值对pairs构成的对象。 使用示例&#xff1a; _.fromPairs([[fred, 30], [barney, 40]]); // > { fred: 30, barney: 40 }尝试手写&#xff1a; ①返回新对象 ②…