一. 选择题

  1. 使用权限修饰符( )修饰的类的成员变量和成员方法,可以被当前包中所有类访问,也可以被它的子类(同一个包以及不同包中的子类)访问。(选择一项)
    Apublic
    B.protected
    C.默认
    D.private
    答案:B ,由下图可得
  2. java第五章课后答案 java第五章课后题答案解析_子类

  3. 以下关于继承条件下构造方法执行过程的代码的执行结果是( )。(选择一项)
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

  1. 编译运行如下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 没有结果

  1. 在Java中关于abstract关键字,以下说法正确的是( )。
    A.abstract类中可以没有抽象方法
    B.abstract类的子类也可以是抽象类
    C.abstract方法可以有方法体
    D.abstract类可以创建对象

答案:C

  1. 在Java接口中,下列选项中属于有效的方法声明是( )。(选择二项)
    A.public void aMethod( );
    B.final void aMethod( );
    C.void aMethod();
    D.private void aMethod( );

答案:AC

二. 简答题

  1. private、默认、protected、public四个权限修饰符的作用。
    private表示私有,只有自己类能访问;default表示没有修饰符修饰,只有同一个包的类能访问;protected表示可以被同一个包的类以及其他包中的子类访问;public表示可以被该项目的所有包中的所有类访问
  2. 继承条件下子类构造方法的执行过程。
    首先调用当前子类中的super()方法来调用对应的父类构造方法,一直追溯到Object类中的构造方法,然后再依次向下执行类中的初始化和构造方法。
  3. 什么是向上转型和向下转型。
    向上转型:父类引用指向子类对象
    向下转型:指的是在向上转型中父类引用的变量只能调用它编译类型的方法,不能调用子类的属性和方法,此时转型叫向下转型
  4. final和abstract关键字的作用。
    final:用final修饰的变量不能被赋值,成为常量;用final修饰的方法不能被重写;被final修饰的类不能被继承
    abstract:抽象类作用就是规范,模板,子类必须实现抽象类中的方法;抽象类中没有方法体,子类必须实现其方法体;拥有抽象方法的类必须是抽象类;抽象类不能实例化对象;抽象类中有属性、方法、构造方法,其中构造方法不能用new来实例,只能被子类调用。
  5. ==和equals()的联系和区别。
    “==”代表比较双方是否相同。如果是基本类型则表示值相等,如果是引用类型则表示地址相等即是同一个对象。
    “equals”默认就是比较两个对象的hashcode,是同一个对象的引用时返回true否则返回false,但是,我们可以根据自己的要求重写equals方法。

三. 编码题

  1. 编写应用程序,创建类的对象,分别设置圆的半径、圆柱体的高,计算并分别显示圆半径、圆面积、圆周长,圆柱体的体积。
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();
		
	}
}
  1. 编写程序实现乐手弹奏乐器。乐手可以弹奏不同的乐器从而发出不同的声音。可以弹奏的乐器包括二胡、钢琴和琵琶。
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);
		
	}
}
  1. 编写程序描述影视歌三栖艺人。需求说明:请使用面向对象的思想,设计自定义类,描述影视歌三梄艺人。
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();
		
	}
}