高淇java300集JAVA面向对象的进阶作业
一、选择题
1.使用权限修饰符(B)修饰的类的成员变量和成员方法,可以被当前包中所有类访问,也可以被它的子类(同一个包以及不同包中的子类)访问。(选择一项)
Apublic
B.protected
C.默认
D.private
private私有属性 只有自己能够使用
defult 默认属性 同包类,同一包的方法,类可以使用
protected 受保护的 同一个包的还有不同包的子类访问
public 公开属性 所有的包和类都可以访问
2.以下关于继承条件下构造方法执行过程的代码的执行结果是( A)。(选择一项)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
class Person { public Person() { System.out.println( "execute Person()" ); } } class Student extends Person { public Student() { System.out.println( "execute Student() " ); } } class PostGraduate extends Student { public PostGraduate() { System.out.println( "execute PostGraduate()" ); } } public class TestInherit { public static void main(String[] args) { new PostGraduate(); } } |
A.execute Person()
execute Student()
execute PostGraduate()
B.execute PostGraduate()
C.execute PostGraduate()
execute Student()
execute Person()
D.没有结果输出
子类的构造方法默认有一个super()继承父类,
若是构造方法的第一行代码没有显式的调用super(...)或者this(...);
那么Java默认都会调用super(),含义是调用父类的无参数构造方法。
这里的super()可以省略
3.编译运行如下Java代码,输出结果是( D)。(选择一项)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
class Base { public void method(){ System.out.print ( "Base method" ); } } class Child extends Base{ public void methodB(){ System.out.print ( "Child methodB" ); } } class Sample { public static void main(String[] args) { Base base= new Child(); base.methodB(); } } |
A.Base method
B.Child methodB
C.hild methodB
D.编译错误
向上转型对象无法使用对象的新增方法,只能使用继承或重写的方法
看清题目是methodB() 如果是method()则是继承中的父类引用指向子类对象
4.在Java中关于abstract关键字,以下说法正确的是(A B)。
A.abstract类中可以没有抽象方法
B.abstract类的子类也可以是抽象类
C.abstract方法可以有方法体
D.abstract类可以创建对象
1. 有抽象方法的类只能定义成抽象类
2. 抽象类不能实例化,即不能用new来实例化抽象类。
3. 抽象类可以包含属性、方法、构造方法。但是构造方法不能用来new实例,只能用来被子类调用。
4. 抽象类只能用来被继承。
5. 抽象方法必须被子类实现。
5.在Java接口中,下列选项中属于有效的方法声明是( A,C)。(选择二项)
A.public void aMethod( );
B.final void aMethod( );
C.void aMethod();
D.private void aMethod( );
常量:接口中的属性只能是常量,总是:public static final 修饰。不写也是。
方法:接口中的方法只能是:public abstract。 省略的话,也是public abstract。
二、简答题
1. private、默认、protected、public四个权限修饰符的作用。
private私有属性 只有自己能够使用
defult 默认属性 同包类,同一包的方法,类可以使用
protected 受保护的 同一个包的还有不同包的子类访问
public 公开属性 所有的包和类都可以访问
2. 继承条件下子类构造方法的执行过程。
父类非抽象类:调用父类的构造方法,然后调用子类自己的构造方法(如果有)
父类为抽象类:(无参)调用父类的无参构造方法,然后调用自己的构造方法(如果有)
(有参)子类显示申明调用父类的有参构造函数,然后在调用子类的构造方法(如果有)
3. 什么是向上转型和向下转型。
向上转型: 父亲 f=new 孩子();
面向对象中的转型只会发生在有继承关系的子类和父类中(接口的实现也包括在这里)。
加入有父类:人,子类:男人和女人。
向上转型: Person p = new Man() ; //向上转型不需要强制类型转化
向下转型: Man man = (Man)new Person() ; //必须强制类型转化
4. final和abstract关键字的作用。
final是为了封装而生的,final父类方法一旦申明,子类只能继承无法修改,用于具有普适性的方法和变量.final类无法被继承.
abtract是为了抽象而生的,abstract类的子类只要不是abstract类,必须重写父类的abstract类.abstract方法不允许实现(没有方法体)
5. ==和equals()的联系和区别。
“==”代表比较双方是否相同。如果是基本类型则表示值相等,如果是引用类型则表示地址相等即是同一个对象。
Object类中定义有:public boolean equals(Object obj)方法,提供定义“对象内容相等”的逻辑。比如,我们在公安系统中认为id相同的人就是同一个人、学籍系统中认为学号相同的人就是同一个人。
三、编码题
1. 编写应用程序,创建类的对象,分别设置圆的半径、圆柱体的高,计算并分别显示圆半径、圆面积、圆周长,圆柱体的体积。
实现思路及关键代码:
1) 编写一个圆类Circle,该类拥有:
a) 一个成员变量,radius(私有,浮点型);//存放圆的半径
b) 两个构造方法(无参、有参);
c) 三个成员方法
double getArea() //获取圆的面积
double getPerimeter() //获取圆的周长
void show() //将圆的关径、周长、面积输出到屏幕
2) 编写一个圆柱体类Cylinder,它继承于上面的Circle类。还拥有:
a) 一个成员变量,double hight (私有,浮点型); //圆柱体的高;
b) 构造方法
c) 成员方法
double getVolume() //获取圆柱体的体积
void showVolume() //将圆柱体的体积输出到屏幕
Circle类
package GaoQiJava300.five.TextCircle; public class Circle {
//半径
private double radius; //无参构造方法
public Circle() {
} //有参构造方法
public Circle(double radius) {
this.radius = radius;
} //三个成员方法 //获取圆的面积
double getArea(){
return Math.pow(radius,2)*Math.PI;
} //获取圆的周长
double getPerimeter(){
return 2*Math.PI*radius;
} //将圆的半径、周长、面积输出到屏幕
public void show(){
System.out.println("半径为"+String.format("%.2f", radius)+"圆周长是:"+String.format("%.2f",getPerimeter())+"面积是"+String.format("%.2f",getArea()));
}
}
Cylinder类
package GaoQiJava300.five.TextCircle; public class Cylinder extends Circle { //圆柱体的高
private double hight; //构造方法
public Cylinder(double radius, double hight) {
super(radius);
this.hight = hight;
} //成员方法 //获取圆柱体的体积
public double getVolume(){
return getArea()*hight;
} //将圆柱体的体积输出到屏幕
public void showVolume(){
System.out.println("圆柱体体积是"+String.format("%.2f",getVolume()));
}
}
Test类
package GaoQiJava300.five.TextCircle; public class Test {
public static void main(String[] args){
Circle circle=new Circle(5);
circle.show();
Cylinder cylinder=new Cylinder(5,10);
cylinder.showVolume();
}
}
运行结果
2. 编写程序实现乐手弹奏乐器。乐手可以弹奏不同的乐器从而发出不同的声音。可以弹奏的乐器包括二胡、钢琴和琵琶。
实现思路及关键代码:
1) 定义乐器类Instrument,包括方法makeSound();
2) 定义乐器类的子类:二胡Erhu、钢琴Piano和小提琴Violin;
3) 定义乐手类Musician,可以弹奏各种乐器play(Instrument i);
4) 定义测试类,给乐手不同的乐器让他弹奏。
Instument类
package GaoQiJava300.five.TextMusic;
public abstract class Instrument {
public abstract void makeSound();
}
二胡类
package GaoQiJava300.five.TextMusic; public class Erhu extends Instrument{
@Override
public void makeSound() {
System.out.println("二泉音乐!!!");
}
}
钢琴类
package GaoQiJava300.five.TextMusic; public class Piano extends Instrument {
@Override
public void makeSound() {
System.out.println("致爱丽丝!!!");
}
}
小提琴类
package GaoQiJava300.five.TextMusic; public class Violin extends Instrument {
@Override
public void makeSound() {
System.out.println("超级马里奥");
}
}
乐手类
package GaoQiJava300.five.TextMusic; public class Musician {
public void play(Instrument instrument){
instrument.makeSound();
}
}
测试类
package GaoQiJava300.five.TextMusic; public class Test {
public static void main(String[] args){
Musician musician=new Musician();
musician.play(new Erhu());
musician.play(new Piano());
musician.play(new Violin());
}
}
测试结果
3. 编写程序描述影视歌三栖艺人。需求说明:请使用面向对象的思想,设计自定义类,描述影视歌三梄艺人。
实现思路:
1) 分析影视歌三栖艺人的特性:可以演电影,可以演电视剧,可以唱歌
2) 定义多个接口描述特性
a) 演电影的接口-----方法:演电影
b) 演电视剧的接口-----方法:演电视剧
c) 唱歌的接口-----方法:唱歌
3) 定义艺人类实现多个接口
程序运行结果如图5-36所示。
Movie接口
package GaoQiJava300.five.Star; public interface Moive {
public abstract void playMoive();
}
Tvplay接口
package GaoQiJava300.five.Star; public interface Tvplay {
public abstract void playTvplay();
}
Voice接口
package GaoQiJava300.five.Star; public interface Voice {
public abstract void playVoice();
}
Star类
package GaoQiJava300.five.Star; public class Star implements Moive,Tvplay,Voice { private String name; public Star(String name) {
this.name = name;
} public void introduction(){
System.out.println("大家好,我是"+name);
}
@Override
public void playMoive() {
System.out.println("我能演电影");
} @Override
public void playTvplay() {
System.out.println("我能演电视剧");
} @Override
public void playVoice() {
System.out.println("我会唱歌");
}
}
Text类
package GaoQiJava300.five.Star; public class Text {
public static void main(String[] args){
Star star=new Star("杨幂");
star.introduction();
star.playMoive();
star.playTvplay();
star.playVoice();
}
}
图5-37 编码题3运行效果图
高淇java300集JAVA面向对象的进阶作业的更多相关文章
- 高淇java300集异常机制作业
1.以下关于异常的代码的执行结果是(C ).(选择一项) 1 2 3 4 5 6 7 8 9 10 11 12 public class Test { public static void m ...
- 尚学堂 213_尚学堂_高淇_java300集最全视频教程_反射机制_提高反射效率_操作泛型_操作注解_合并文件.mp4
在反射的时候如果去掉了安全性检测机制,能够大大的提高反射的执行效率,我们来看下面的代码进行比较 package com.bjsxt.test; import java.lang.reflect.Met ...
- 高效能团队的Java研发规范(进阶版)
目前大部分团队是使用的阿里巴巴Java开发规范,不过在日常开发中难免遇到覆盖不到的场景,本文在阿里巴巴Java开发规范基础上,补充一些常用的规范,用于提升代码质量及增强代码可读性. 编程规约 1.基础 ...
- 白嫖党的福音!!!全新的Java300集视频(2022版)来了!
它来了它来了,经过一年时间的沉淀, [尚学堂]高淇Java300集完整版正式发布啦! 应广大网友和尚学堂忠实的孜孜学子以及听众朋友的要求,尚学堂在去年十月份就把预计在2022年发布的Java300集提 ...
- Java面向对象程序设计笔记 • 【目录】
持续更新中- 我的大学笔记>>> 章节 内容 实践练习 Java面向对象作业目录(作业笔记) 第1章 Java面向对象笔记 • [第1章 面向对象] 第2章 Java面向对象笔记 • ...
- 15套java互联网架构师、高并发、集群、负载均衡、高可用、数据库设计、缓存、性能优化、大型分布式 项目实战视频教程
* { font-family: "Microsoft YaHei" !important } h1 { color: #FF0 } 15套java架构师.集群.高可用.高可扩 展 ...
- 关于高淇JAVA中SORM总结学习笔记详细个人解释
代码来源于高淇JAVA教学视频 谢谢高淇老师的教学. 因为自己在学习的过程中发现了很多困难点,总结下希望对自己接下来学框架提升.给像我一样得初学者方便. SORM框架是一个简单的ORM,关系对象映射, ...
- 夯实Java基础系列1:Java面向对象三大特性(基础篇)
本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 [https://github.com/h2pl/Java-Tutorial](https: ...
- [.net 面向对象程序设计进阶] (25) 团队开发利器(四)分布式版本控制系统Git——使用GitStack+TortoiseGit 图形界面搭建Git环境
[.net 面向对象程序设计进阶] (25) 团队开发利器(四)分布式版本控制系统Git——使用GitStack+TortoiseGit 图形界面搭建Git环境 本篇导读: 前面介绍了两款代码管理工具 ...
随机推荐
- js继承之组合继承(结合原型链继承 和 借用构造函数继承)
在我的前两篇文章中,我们已经介绍了 js 中实现继承的两种模式:原型链继承和借用构造函数继承.这两种模式都存在各自的缺点,所以,我们考虑是否能将这二者结合到一起,从而发挥二者之长.即在继承过程中,既可 ...
- Javascript的内存泄漏分析
作为程序员(更高大尚的称谓:研软件研发)的我们,无论是用Javascript,还是.net, java语言,肯定都遇到过内存泄漏的问题.只不过他们都有GC机制来帮助程序员完成内存回收的事情,如果你是C ...
- len(x) 击败 x.len(),从内置函数看 Python 的设计思想
内置函数是 Python 的一大特色,用极简的语法实现很多常用的操作. 它们预先定义在内置命名空间中,开箱即用,所见即所得.Python 被公认是一种新手友好型的语言,这种说法能够成立,内置函数在其中 ...
- SQL 横转竖 、竖专横(转载) 列转行 行转列
普通行列转换 问题:假设有张学生成绩表(tb)如下: 姓名 课程 分数 张三 语文 张三 数学 张三 物理 李四 语文 李四 数学 李四 物理 想变成(得到如下结果): 姓名 语文 数学 物理 --- ...
- sun.misc jar包
一直以来Base64算法的加密解密都是使用sun.misc包下的BASE64Encoder及BASE64Decoder来进行的.但是这个类是sun公司的内部方法,并没有在Java API中公开过,不属 ...
- Http通讯Util
目录 HttpUtil类 HttpUtil类 import java.io.BufferedReader; import java.io.IOException; import java.io.Inp ...
- 有源点最短路径--Dijkstra算法
问题描述:一个带权有向图G与源点v,求从源点v到G中其他顶点的最短路径,并限定各边权值大于0 它的思想在于,对顶点集划分为两组,第一组为已经求出的最短路径的集合(S),期初只有一个顶点,此后每求出一个 ...
- ArcGIS对SLD样式的支持
文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/ 1.ArcGISWMS服务对SLD的支持 在完成用geoserver的w ...
- SQL Server查看索引重建、重组索引进度
相信很多SQL Server DBA或开发人员在重建或重组大表索引时,都会相当郁闷,不知道索引重建的进度,这个对于DBA完全是一个黑盒子,对于系统负载非常大的系统或维护窗口较短的系统,你会遇到一些挑战 ...
- OutOfMemoryError/OOM/内存溢出异常实例分析--堆内存溢出
Java堆内存溢出 只要不断创建对象,并且保证GC Roots到对象之间有可达路径来避免垃圾回收机制清除这些对象, 那么在对象数量到达最大堆的容量限制后就会产生内存溢出异常,代码如下: import ...