一. 选择题
- 使用权限修饰符( )修饰的类的成员变量和成员方法,可以被当前包中所有类访问,也可以被它的子类(同一个包以及不同包中的子类)访问。(选择一项)
Apublic
B.protected
C.默认
D.private
答案:B ,由下图可得 - 以下关于继承条件下构造方法执行过程的代码的执行结果是( )。(选择一项)
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.没有结果输出
答案:A
- 编译运行如下Java代码,输出结果是( )。(选择一项)
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();
}
}
答案:D 没有结果
- 在Java中关于abstract关键字,以下说法正确的是( )。
A.abstract类中可以没有抽象方法
B.abstract类的子类也可以是抽象类
C.abstract方法可以有方法体
D.abstract类可以创建对象
答案:C
- 在Java接口中,下列选项中属于有效的方法声明是( )。(选择二项)
A.public void aMethod( );
B.final void aMethod( );
C.void aMethod();
D.private void aMethod( );
答案:AC
二. 简答题
- private、默认、protected、public四个权限修饰符的作用。
private表示私有,只有自己类能访问;default表示没有修饰符修饰,只有同一个包的类能访问;protected表示可以被同一个包的类以及其他包中的子类访问;public表示可以被该项目的所有包中的所有类访问 - 继承条件下子类构造方法的执行过程。
首先调用当前子类中的super()方法来调用对应的父类构造方法,一直追溯到Object类中的构造方法,然后再依次向下执行类中的初始化和构造方法。 - 什么是向上转型和向下转型。
向上转型:父类引用指向子类对象
向下转型:指的是在向上转型中父类引用的变量只能调用它编译类型的方法,不能调用子类的属性和方法,此时转型叫向下转型 - final和abstract关键字的作用。
final:用final修饰的变量不能被赋值,成为常量;用final修饰的方法不能被重写;被final修饰的类不能被继承
abstract:抽象类作用就是规范,模板,子类必须实现抽象类中的方法;抽象类中没有方法体,子类必须实现其方法体;拥有抽象方法的类必须是抽象类;抽象类不能实例化对象;抽象类中有属性、方法、构造方法,其中构造方法不能用new来实例,只能被子类调用。 - ==和equals()的联系和区别。
“==”代表比较双方是否相同。如果是基本类型则表示值相等,如果是引用类型则表示地址相等即是同一个对象。
“equals”默认就是比较两个对象的hashcode,是同一个对象的引用时返回true否则返回false,但是,我们可以根据自己的要求重写equals方法。
三. 编码题
- 编写应用程序,创建类的对象,分别设置圆的半径、圆柱体的高,计算并分别显示圆半径、圆面积、圆周长,圆柱体的体积。
class Circle{
double r;
public Circle(double r) {
super();
this.r = r;
}
public Circle() {
this.r = r;
}
double getArea() {
return(r*r*Math.PI);
}
double getPerimeter() {
return(2*r*Math.PI);
}
void show() {
System.out.println(r);
System.out.println(r*r*Math.PI);
System.out.println(2*r*Math.PI);
}
}
class Cylinder extends Circle{
double h;
public Cylinder(double r, double h) {
super(r);
this.h = h;
}
double getVolume() {
return(r*r*Math.PI*h);
}
void showVolume() {
System.out.println(r*r*Math.PI*h);
}
}
public class Main {
public static void main(String[] args) {
Circle c=new Circle(2.1);
c.show();
Cylinder cy=new Cylinder(2.1,2.1);
cy.showVolume();
}
}
- 编写程序实现乐手弹奏乐器。乐手可以弹奏不同的乐器从而发出不同的声音。可以弹奏的乐器包括二胡、钢琴和琵琶。
class Instrument extends Musician{
void makeSound() {
System.out.println("玩什么乐器呢?");
}
}
class Erhu extends Instrument{
void makeSound() {
System.out.println("来玩二胡吧");
}
}
class Piano extends Instrument{
void makeSound() {
System.out.println("来玩钢琴吧");
}
}
class Violin extends Instrument{
void makeSound() {
System.out.println("来玩小提琴吧");
}
}
class Musician{
void play(Instrument m) {
m.makeSound();;
}
}
class TestInstrument{
void test(String musicianName,Instrument i) {
System.out.println(musicianName);
Musician musician=new Musician();
musician.play(i);
}
}
public class Main {
public static void main(String[] args) {
TestInstrument t1=new TestInstrument();
Instrument i=new Erhu();
t1.test("韩文韬", i);
}
}
- 编写程序描述影视歌三栖艺人。需求说明:请使用面向对象的思想,设计自定义类,描述影视歌三梄艺人。
package cn.sxt.oop;
interface Movie{
public abstract void showMovie();
}
interface TV{
public abstract void showTV();
}
interface Song{
public abstract void showSong();
}
class Actor implements Movie,TV,Song{
public Actor(String name) {
System.out.println("大家好我是"+name);
}
@Override
public void showSong() {
System.out.println("我能唱歌");
}
@Override
public void showTV() {
System.out.println("我能上电视");
}
@Override
public void showMovie() {
System.out.println("我能演电影");
}
}
public class Main {
public static void main(String[] args) {
Actor a=new Actor("韩文韬");
a.showMovie();
a.showSong();
a.showTV();
}
}