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

一、填空题

	1、方法,抽象类
	2、子类、父类、基类
	3、final
	4、Object
	5、参数列表、“->”、表达式主体

二、判断题

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

三、选择题

1、B     2、ABC      3、C      4、C      5、A

四、简答题

1、在继承关系中,子类的方法与父类的某一方法具有相同的方法名、返回类型和参数列表,则称子类的该方法重写(覆盖)父类的方法。

2、多态意味着一个对象有着多种形态,可以在特定的情况下,表现不同的状态,从而对应着不同的属性和方法。简单的说,多态就是使用父类类型的变量引用子类对象,根据被引用子类对象的特性,程序会得到不同的运行效果。

3、在Java中,使用abstract关键字修饰的类称之为抽象类。抽象类是不能被实例化的,通常需要写一个子类来继承抽象类,同时实例化子类来获得该类的对象。抽象类通常用于表示一种抽象的概念。
接口可以说是一种特殊的抽象类,接口中只能定义常量、抽象方法、静态方法和默认方法。由于接口的特殊性,在定义时需要使用interface关键字。

五、编程题

1.class Student {
	public String name;
	public int age;
	public Student(String name,int age){
		this.name=name;
		this.age=age;
	}
	public void show(){
		System.out.println("name: "+name+" age: "+age);
	}
}
class UnderGraduate extends Student{
	public String degree;
	public UnderGraduate(String name,int age,String degree){
		super(name, age);
		this.degree=degree;
	}
	public void show(){
		System.out.println("name: "+name+" age: "+age+" degree: "+degree);
	}
}
public class Test01{
	public static void main(String[] args) {
		Student student = new Student("zhangsan", 16);
		student.show();
		UnderGraduate underGraduate = new UnderGraduate("lisi", 20, "bechalor");
		underGraduate.show();
	}
	}
2.interface Shape {
	double area(double givenValue);
}
class Square implements Shape{
	public double area(double sideLength) {
      return sideLength*sideLength;
	}
} 
class Circle implements Shape{
	public double area(double r) {
       return Math.PI*r*r;
	}
}
public class Test02 {
	public static void main(String[] args) {
		Shape square = new Square();
		Shape circle = new Circle();
		System.out.println(square.area(2));
		System.out.println(circle.area(3));
	}
}

六、原题及其解析

一.填空题
1.一个类如果实现一个接口,那么它就需要实现接口中定义的全部( ),否则该类就必须定义成()。 方法 抽象类

2.一个类可以从其他的类派生出来,派生出来的类称为(),用于派生的类称为()或者()。子类 父类 基类

3.定义一个Java类时,如果前面加使用( )关键字修饰,那么该类不可以被继承。final

4.在Java语言中,所有的类都直接或间接继承自()类。Object

5.一个Lambda表达式由三个部分组成,分别为()、()和()。参数列表、“->”、表达式主体

二.判断题
1.抽象方法必须定义在抽象类中,所以抽象类中的方法都是抽象方法。() 错×

2.Java中被final关键字修饰的变量,不能被重新赋值。() 对√

3.不存在被继承关系的情况下,也可以实现方法重写。() 错×

4.函数式接口在Java中是指由且仅有一个抽象方法的接口。()对√

5.接口中只能定义常量和抽象方法。() 对√

三.选择题
1.在类的继承关系中,需要遵循以下哪个继承原则?()B
A.多重 B.单一 C.双重 D.不能继承

2.关于super关键字以下说法哪些是正确的?(多选)()ABC
A.super关键字可以调用父类的构造方法
B.super关键字可以调用父类的普通方法
C.super与this不能同时存在于同一个构造方法中
D.super与this可以同时存在于同一个构造方法中

3.类中的一个成员方法被下面哪个修饰符修饰,该方法只能在本类被访问?()C
A.public B.protected C.private D.default

4.在Java中,要想让一个类继承另一个类,可以使用以下哪个关键字?()C
A.inherits B.implements C.extends D.modifies

5.已知类的继承关系如下:

class Employee;
class Manager extends Employee;
class Director extends Employee;

则以下语句能通过编译的有哪些?()A
A.Employee e = new Manager();
B.Director d = new Manager();
C.Director d = new Employee();
D.Manager m = new Director();

四.简答题
1.简述什么是方法重写。
在继承关系中,子类的方法与父类的某一方法具有相同的方法名、返回类型和参数列表,则称子类的该方法重写(覆盖)父类的方法。

2.简述什么是多态。
多态意味着一个对象有着多种形态,可以在特定的情况下,表现不同的状态,从而对应着不同的属性和方法。简单的说,多态就是使用父类类型的变量引用子类对象,根据被引用子类对象的特性,程序会得到不同的运行效果。

3.简述抽象类和接口的区别。
在Java中,使用abstract关键字修饰的类称之为抽象类。抽象类是不能被实例化的,通常需要写一个子类来继承抽象类,同时实例化子类来获得该类的对象。抽象类通常用于表示一种抽象的概念。
接口可以说是一种特殊的抽象类,接口中只能定义常量、抽象方法、静态方法和默认方法。由于接口的特殊性,在定义时需要使用interface关键字。


五.编程题
1.设计一个学生类Student和它的一个子类Undergraduate。要求如下:
(1)Student类有name和age属性,一个包含两个参数的构造方法,用于给name和age属性赋值,一个show()方法打印Student的属性信息。
(2)本科生类Undergraduate增加一个degree(学位)属性。有一个包含三个参数的构造方法,前两个参数用于给继承的name和age属性赋值,第三个参数给degree专业赋值,一个show()方法用于打印Undergraduate的属性信息。
(3)在测试类中分别创建Student对象和Undergraduate对象,调用它们的show()。

1.class Student {
	public String name;
	public int age;
	public Student(String name,int age){
		this.name=name;
		this.age=age;
	}
	public void show(){
		System.out.println("name: "+name+" age: "+age);
	}
}
class UnderGraduate extends Student{
	public String degree;
	public UnderGraduate(String name,int age,String degree){
		super(name, age);
		this.degree=degree;
	}
	public void show(){
		System.out.println("name: "+name+" age: "+age+" degree: "+degree);
	}
}
public class Test01{
	public static void main(String[] args) {
		Student student = new Student("zhangsan", 16);
		student.show();
		UnderGraduate underGraduate = new UnderGraduate("lisi", 20, "bechalor");
		underGraduate.show();
	}
	}

2.设计一个Shape接口和它的两个实现类Square和Circle。要求如下:
(1)Shape接口中有一个抽象方法area(),方法接收有一个double类型的参数,返回一个double类型的结果。
(2)Square和Circle中实现了Shape接口的area()抽象方法,分别求正方形和圆形的面积并返回。
在测试类中创建Square和Circle对象,计算边长为2的正方形面积和半径为3的圆形面积。

2.interface Shape {
	double area(double givenValue);
}
class Square implements Shape{
	public double area(double sideLength) {
      return sideLength*sideLength;
	}
} 
class Circle implements Shape{
	public double area(double r) {
       return Math.PI*r*r;
	}
}
public class Test02 {
	public static void main(String[] args) {
		Shape square = new Square();
		Shape circle = new Circle();
		System.out.println(square.area(2));
		System.out.println(circle.area(3));
	}
}
  • 62
    点赞
  • 300
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 21
    评论
评论 21
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

香鱼嫩虾

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值