《Java基础入门第2版》--黑马程序员 课后答案及其详解 第3章 面向对象(上)

一.填空题

1、封装、继承、多态 
2、this
3、private、default、protected、public
4、静态变量
5、private

二.判断题

 1、对  2、对  3、对  4、对  5、错

三.选择题

1、D   2、ABC   3、A  4、D  5、BD 

四.简答题

1、构造方法是类的一个特殊成员,它会在类实例化对象时被自动调用。而普通方法只有在使用的时候才会被调用。在定义构造方法时要求方法名与类名相同、在方法名的前面没有返回值类型的声明、在方法中不能使用return语句返回一个值。

2、(1)方法名与类名相同;(2)在方法名的前面没有返回值类型的声明;(3)在方法中不能使用return语句返回一个值,但是可以单独写return语句来作为方法的结束。

3、Java面向对象有三大特性,封装是将对象的属性和行为封装起来,不需要让外界知道具体实现细节;继承是可以在无需重新编写原有类的情况下,对原有类的功能进行扩展;多态指的是在一个类中定义的属性和功能被其他类继承后,当把子类对象直接赋值给父类引用变量时,相同引用类型的变量调用同一个方法所呈现出的多种不同行为特性。

五.编程题

1.class Student {
    
    
	private String name;
	private double grade;
	public Student() {
    
    
	}
	public Student(String name, double grade) {
    
    
		this.name = name;
		this.grade = grade;
	}
	public String getName() {
    
    
		return name;
	}
public void setName(String name) {
    
    
		this.name = name;
	}
	public double getGrade() {
    
    
		return grade;
	}
	public void setGrade(double grade) {
    
    
		this.grade = grade;
	}
}
public class Test01 {
    
    
	public static void main(String[] args) {
    
    
		Student stu1 = new Student();
		stu1.setName("zhangsan");
		stu1.setGrade(99);
		Student stu2 = new Student("lisi", 100);
	}
}
2.public class Test {
    
    
	public static void main(String[] args) {
    
    
		int n = 8;
		int num = getNum(n);
		System.out.println("第"+n+"个数的数值是:"+num);
	}
    public static int getNum(int n) {
    
      
        if (n == 1){
    
    
        	return 0;  
        } else if (n == 2 || n == 3) {
    
    
        	return 1; 
        } else {
    
    
        	return getNum(n - 1) + getNum(n - 2);  
        }
    }  
}

六.原题及其解析

一.填空题
1.面向对象的三大特征是( )、( )和( )
2.在非静态成员方法中,可以使用关键字( )访问类的其他非静态成员
3.在Java中,针对类、成员方法和属性提供了四种访问级别,分别是( )、( )、( )和( )
4.被static关键字修饰的成员变量被称为( ),它可以被该类所有的实例对象共享。
5.所谓类的封装是指在定义一个类时,将类中的属性私有化,即使用( )关键字来修饰。
二.判断题
1.在定义一个类的时候,如果类的成员被private所修饰,该成员不能在类的外部被直接访问。()
2.Java中的每个类都至少有一个构造方法,一个类中如果没有定义构造方法,系统会自动为这个类创建一个默认的构造方法。()
3.声明构造方法时,不能使用private关键字修饰。()
4.类中static修饰的变量或方法,可以使用类名或对象的引用变量访问。()
5.静态代码块会随着类对象的创建而执行。()
三.选择题
1.下面哪一个是正确的类的声明?()
A.public void HH{…} B.public class Move(){…} C.public class void number{.} D.public class Car{…}
2.下面对于构造方法的描述,正确的有哪些?(多选)()
A.方法名必须和类名相同
B.方法名的前面没有返回值类型的声明
C.在方法中不能使用return语句返回一个值
D.当定义了带参数的构造方法,系统默认的不带参数的构造方法依然存在
3.在Java中,针对类和提供了4种访问级别,以下控制级别由小到大依次列出正确的是()
A.private、default、protected和public
B.default、private、protected和public
C.protected、default、private和public
D.protected、private、default和public
4.请先阅读下面的代码

public class Test{
    
    
public Test(){
    
    
System.out.println("构造方法一被调用了");
}
public Test(int x){
    
    
System.out.println("构造方法二被调用了");
}
public Test(boolean b){
    
    
this(1);
System.out.println("构造方法三被调用了");
}
public static void main(String[]args){
    
    
Test test = new Test(true);
}
}

上面程序的运行结果为下列哪一项?()
A.构造方法一被调用了 B.构造方法二被调用了 C.构造方法三被调用了 D.以上三个选项之和
5.以下关于static关键字的说法正确的是?(多选)()
A.static关键字可以修饰类 B.static关键字可以修饰成员 C.static关键字可以修饰所有的变量 D.static关键字可以修饰代码块
四.简答题
1.简述构造方法和普通的成员方法有什么区别
2.简述Java中构造方法须同时满足的条件
3.简述Java面向对象特性。
五.编程题
1.请按照以下要求设计一个学生类Student,并进行测试。要求如下:
(1)Student类中包含姓名、成绩两个属性。
(2)分别给这两个属性定义两个方法,一个方法用于设置值,另一个方法用于获取值。
(3)Student类中定义一个无参的构造方法和一个接收两个参数的构造方法,两个参数分别为姓名和成绩属性赋值。
(4)在测试类中创建两个Student对象,一个使用无参的构造方法,然后调用方法给姓名和成绩赋值,另一个使用有参的构造方法,在构造方法中给姓名和成绩赋值。
2.定义一个这样的数列:0,1,1,2,3,5,…(斐波那契数列)。要求如下:
使用递归方法获取第n个数的数值。

猜你喜欢

转载自blog.csdn.net/hypertext123/article/details/109142859