第二周周考
一、简答题
1.谈谈你对面向对象中类和对象的理解,并指出二者的关系?
类是对一群具有相同特征或者行为的事物的一个统称,是抽象的,不能直接使用。其中,特征被称为属性,行为被称为方法。
对象是由类创造出来的一个具体存在,可以直接使用,由哪一个类创建出来的对象,就拥有在哪一个类中定义的属性和方法。
类是模板,对象是根据类这个模板创建出来的,应该先有类,再有对象。类只有一个,而对象可以有很多个。类与对象是整个面向对象中最基础的组成单元。
2.说明Java方法中的参数传递机制的具体体现?
主要分为值传递和址传递
如果传递进去的是基本数据类型参数得值,那么再调用函数的地方,传入的两个数值并没有发生改变。
如果传入的是引用数据类型的地址,那么在调用函数的地方,传入的两个地址之后,这两个引用数据类型的数值发生改变。
3.构造器的作用是什么?使用中哪些注意点(>=3条)?
Java构造器的作用是在创建此对象时自动进行一些初始化操作
注意点:方法名和类名完全相同
它不含返回值,甚至连void也没有
不能被static、final、abstract、native等等修饰
4.Java中目前学习涉及到四种权限修饰符都有什么?并说明各自的权限范围
public:公开的,只要能够创建该类对象,就可以调用。
protected:包权限,在同包下可以使用。
default:包权限,在同包下可以使用。
private:私有权限,只能自己用,别人不让用。
5.==和equals()有何区别?
“==”是运算符,如果是基本数据类型,则比较存储的值;如果是引用数据类型,则比较所指向对象的地址值。
equals是Object的方法,比较的是所指向的对象的地址值,一般情况下,重写之后比较的是对象的值。
二、编程题(第一题10分,第二题20分)
1.创建Circle类,提供私有的radius属性,提供相应的get和set方法,提供求圆面积的方法
public class Circle {
private double radius;
public Circle() {
this.radius = 1;
}
public double getRadius() {
return radius;
}
public void setRadius(double radius) {
this.radius = radius;
}
double findArea(){
return radius*radius*3.14;
}
}
2.根据以下图,写出设计代码,注意使用this与super,要保证类的封装性
图没法上传
public class Cylinder extends Circle{
private double length;
public Cylinder() {
this.length = 1;
}
public double getLength() {
return length;
}
public void setLength(double length) {
this.length = length;
}
double findVolume(){
return super.findArea()*length;
}
@Override
double findArea() {
return (super.findArea()*2)+super.getRadius()*2*3.14*length;
}
}