选择题
题目1(单选):
下列关于面向对象描述错误的是 ( C )
选项 :
A: 面向对象是一种基于面向过程的编程思想。
B: 使用面向对象思想完成一个功能,强调找一个具有该功能的对象,使用这个对象完成功能。
C: 面向对象与面向过程,两种思想相互独立,二者没有任何关联.
D: 毛毛想吃棉花糖,她有2种方案,一是出去小吃街上找个卖棉花糖的商贩,让商贩给做一个大棉花糖.二是 自己上网搜索制作棉花糖的步骤,然后学着一步步自己做。自己做,就是面向过程思想,关注步骤;找商贩做就是面向对象思想,关注具备功能的对象.
题目2(单选):
下列关于类和对象描述正确的是( D )
选项 :
A: 类是描述事物的属性和行为的特征而对象是一类事物的模板
B: 类是事物的具体体现而对象是一组相关属性和行为的集合
C: 类和对象可以看成是一类事物的模板
D: 类是对一类事物的描述,是抽象的,可以看做成模板, 而对象是一类事物的实例,是具体的
题目3(单选):
下列信息中包含的内容不是类与对象关系的是( C )
选项 :
A: 学生和小明同学
B: 电脑和联想Y430电脑
C: 猫和狗
D: 手机和华为P30手机
题目4(单选):
为Person类定义姓名(name)、年龄(age)属性,为Person类定义吃饭(eat)行为,横线处应该填写的代码是( D )
public class Person {
// 属性:姓名
// 属性:年龄
// 行为:吃饭
}
选项 :
A
String name;
String age;
public static void eat(){}
B
int name;
String age;
public void eat(){}
C
int name;
int age;
public static void eat(){}
D
String name;
int age;
public void eat(){}
题目5(多选):
代码如下:
public class Hero{
String name;
int age;
String gender;
public void skillQ(){
System.out.println("Q技能");
}
public void skillW(){
System.out.println("W技能");
}
public void skillE(){
System.out.println("E技能");
}
public void skillR(){
System.out.println("R技能");
}
}
下列说法正确的是( BD)
选项 :
A: 英雄类中,变量name,age,gender没有赋值所以语法错误。
B: skillQ,skillW,skillE,skillR四个方法代表了这个英雄的四个行为。
C: 这个类中方法没有加static,所以语法错误。
D: 这个类是一个正确的定义格式,表示描述英雄这个事物,用属性和行为来进行描述的。
题目6(单选):
下列代码的运行结果是(A )
class Student {
String name;
int age;
public void show() {
System.out.println(name + "," + age);
}
}
public class Test {
public static void main(String[] args) {
Student s = new Student();
s.show();
s.name = "张三丰";
s.age = 108;
s.show();
}
}
选项 :
A: null,0
张三丰,108
B: “”,0
“张三丰”,108
C: null,null
“张三丰”,108
D: null,null
张三丰,108
题目7(单选):
下列关于局部变量和成员变量描述错误的是(B )
选项 :
A: 成员变量定义在类中,方法外;局部变量定义在方法内。
B: 成员变量和局部变量在整个类中都可以使用
C: 成员变量有默认值;局部变量没有默认值,必须先赋值,后使用.
D: 成员变量随对象一起在堆内存中存储,局部变量随方法的调用而存在于栈内存。
题目8(单选):
代码如下:
public class Student{
String name;
int age;
public void study(){
System.out.println("学习");
}
}
public class Demo{
public static void main(String [] args){
Student s = new Student(); ①
s.name = "小丽"; ②
s.age = 16; ③
s.study(); ④
s = new Student(); ⑤
s.name = "小丽";
s.age = 16;
s.study();
}
}
下列说法错误的是(D )
选项 :
A: 关于①这一行代码,表示在堆里面开辟一个空间。等号左边的局部变量在栈,右边new出来的空间在堆,把右边的地址值赋值给左边的变量。
B: ②这里表示把"小丽"这个值赋值给s记录的对象中name属性 ,
C: ④这个代码表示调用成员方法,所以此时study这个方法会被加载进栈执行。
D: ⑤这里的对象跟①处的对象,属性都是小丽,16。所以表示同一个对象。
选择题
题目9(单选):
下列关于private描述错误的是 ( D )
选项 :
A: 被private修饰的成员变量和成员方法,只能在本类中使用,不能在其他类中直接访问
B: private是一个权限修饰符,可以完成类对成员变量的封装,防止外部非法访问.
C: 类的成员变量被private修饰,如果想让成员变量被其他类使用,可以为成员变量提供对应public的setXxx和getXxx方法.
D: private仅用来修饰成员变量.
题目10(单选):
下列关于this描述错误的是( B )
选项 :
A: 当成员变量和局部变量重名时,可以使用this来区分。
B: this可以调用本类的成员变量和成员方法 ,调用不了构造方法
C: this表示本类对象的引用。
D: 在方法中访问本类成员变量(非重名),可以省略this不写。
题目11(多选):
下列关于构造方法说法正确的是( BD )
选项 :
A: 我们可以用对象直接调用构造方法。
B: 构造方法在创建对象的时候被调用,用来进行对成员变量的初始化
C: 构造方法的方法名可以随便定义,只要符合Java的基本命名规范即可。
D: 构造方法不能有返回值,连void都不能有。
题目12(单选):
代码如下:
public class Person{
private String name;
__________________
}
横线处填写Person类的构造方法的正确语法格式是( C )
选项 :
A
public void Person(String name){
name = name;
}
B
public person(){
}
C
public Person(String name){
this.name = name;
}
D
public Person(String name){
return name;
}
题目13(单选):
代码如下:
public class Student {
private String name;
private int age;
public Student(){}
public Student(String name,int age){
this.name = name;
this.age = age;
}
public void setName(String name) {
this.name = name;
}
public String getName(){
return name;
}
public void setAge(int age) {
this.age = age;
}
public int getAge(){
return age;
}
public void show(){
System.out.println(name + "---" + age);
}
}
下列描述正确的是( C )
选项 :
A: 此时空参构造可以省略不写,因为虚拟机会默认给出。
B: 根据面向对象的要求,get和set方法不写,只要把定义变量前面的private删掉也可以。
C: 全参构造用来给成员变量初始化值,set方法用来给成员变量赋值
D: 构造方法的名字大小写都可以
题目14(单选):
下列代码的运行结果是(C )
class Student {
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
public class Demo{
public static void main(String [] args){
Student s = new Student();
s.setName("小丽");
s.setAge(16);
System.out.println(s.getName() + "---" + s.getAge());
}
}
选项 :
A: 语法错误,编译报错。
B: 小丽 — 16
C: null — 16
D: 小丽 — 0
题目15(单选):
下列代码的运行结果是( D )
public class Person{
private String name;
private int age;
public void setAge(int age){
this.age = age; //请重点关注
}
public int getAge(){
return age; //请重点关注
}
public void setName(String name){
name = name; //请重点关注
}
public String getName(){
return name; //请重点关注
}
public void show(){
System.out.println(age + "::"+ name);
}
}
public class Test{
public static void main(String[] args){
Person p = new Person();
p.age = 10; //错误
p.setName("播仔");
p.show();
}
}
选项 :
A: 10::播仔
B: 0::播仔
C: 10::null
D: 语法错误,编译报错。
题目16单选):
下列代码的运行结果是(B )
public class Person{
private String name="张三";
public Person(){
name="李四";
}
public Person(String name){
this.name=name;
}
public void setName(String name){
this.name = name;
}
public String getName(){
return name;
}
public void show(){
System.out.println(name);
}
}
public class Test{
public static void main(String[] args){
Person p1=new Person();
p1.show();
Person p2=new Person("王五");
p2.show();
}
}
选项 :
A: 张三
李四
B: 李四
王五
C: 张三
王五
D: 李四
张三
代码题
题目17:
请定义教师类(Teacher),属性包括姓名和工号。。定义教课(teach)方法,输出“工号为xxx的xxx老师正在讲课”。
训练提示
1、教师类,属性有两个,姓名和工号,定义为成员变量,都可以定义为字符串类型
2、教师类,有一个教课行为,定义成员方法,输出相应的信息
4、教师类定义完,在测试类中创建对象进行测试。
操作步骤
1、定义Teacher类,定义两个成员变量String name, String id,都使用private修饰
2、编写成员方法teach(),按照要求的格式将属性信息进行输出。
4、编写测试类TeacherTest,在主方法中创建教师对象,直接调用对象的属性,进行赋值
5、调用teach方法。
参考代码
public class Teacher {
// 成员变量
String name;
String id;
// 教课的方法
public void teach() {
System.out.println("工号为" + id + "的" + name + "老师正在讲课");
}
}
public class TeacherTest {
public static void main(String[] args) {
// 创建Teacher对象
Teacher t1 = new Teacher(); // 使用空参构造
t1.name = "张三";
t1.id = "001";
// 调用方法
t1.teach();
}
}
题目18:
定义手机类,手机有品牌(brand),价格(price)和颜色(color)三个属性,有打电话call()和sendMessage()两个功能。
定义测试类,在主方法中创建对象,直接给对象的属性赋值。
调用对象的两个功能,打印效果如下:
正在使用价格为3998元黑色的小米手机打电话....
正在使用价格为3998元黑色的小米手机发短信....
训练提示
- 类中的属性就是成员变量,类中的行为功能就是成员方法。
操作步骤
- 定义手机类,手机类中定义String类型的品牌,int类型的价格,String类型的颜色,
- 编写打电话的成员方法,方法中对成员变量进行使用。
- 编写发短信的成员方法,方法中对成员变量进行使用。
- 在测试类中创建手机对象,直接给对象的属性赋值,分别调用各个方法。
参考代码
手机类:
public class Phone {
//定义品牌
String brand;
//定义价格
int price;
//定义颜色
String color;
//定义打电话方法
public void call(){
System.out.println("正在使用价格为"+price+"元"+color+"的"+brand+"手机打电话....");
}
//定义发短信方法
public void sendMessage(){
System.out.println("正在使用价格为"+price+"元"+color+"的"+brand+"手机发短信....");
}
}
测试类:
public class Demo1 {
public static void main(String[] args) {
//创建手机对象
Phone p = new Phone();
//调用set方法赋值
p.brand = "小米";
p.price = 3998;
p.color = "黑色";
//调用打电话功能
p.call();
//调用发短信功能
p.sendMessage();
}
}
代码题
题目19:
定义标准学生类,属性包括姓名和年龄,要求分别使用空参和有参构造方法创建对象,空参创建的对象通过setXxx赋值,有参创建的对象直接赋值,并通过show方法展示数据。
训练提示
1、学生类,属性有两个,姓名和年龄,定义为成员变量,姓名是字符串类型,年龄是整数
2、提供空参构造、带参构造,提供两个成员变量的get和set方法
3、学生类,有一个show方法,定义成员方法,输出相应的信息
4、学生类定义完,在测试类中创建对象进行测试。
操作步骤
1、定义Student类,定义两个成员变量String name, int age,都使用private修饰
2、提供空参构造方法和有参构造方法,提供get和set方法
3、编写成员方法show(),按照要求的格式将属性信息进行输出。
4、编写测试类StudentTest,在主方法中创建学生对象,空参创建的对象通过setXxx赋值,有参创建的对象直接赋值。
5、调用show方法。
参考代码
class Student {
//成员变量
private String name;
private int age;
//构造方法
public Student() {
}
public Student(String name, int age) {
this.name = name;
this.age = age;
}
//成员方法
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setAge(int age) {
this.age = age;
}
public int getAge() {
return age;
}
public void show() {
System.out.println(name + "," + age);
}
}
/*
创建对象并为其成员变量赋值的两种方式
1:无参构造方法创建对象后使用setXxx()赋值
2:使用带参构造方法直接创建带有属性值的对象
*/
public class StudentDemo {
public static void main(String[] args) {
//无参构造方法创建对象后使用setXxx()赋值
Student s1 = new Student();
s1.setName("林青霞");
s1.setAge(30);
s1.show();
//使用带参构造方法直接创建带有属性值的对象
Student s2 = new Student("林青霞",30);
s2.show();
}
}
题目20:
请定义教师类(Teacher),属性包括姓名和工号。要求分别使用空参和有参构造方法创建对象,空参创建的对象通过setXxx赋值,有参创建的对象直接赋值。定义教课(teach)方法,输出“工号为xxx的xxx老师正在讲课”。
训练提示
1、教师类,属性有两个,姓名和工号,定义为成员变量,都可以定义为字符串类型
2、提供空参构造、带参构造,提供两个成员变量的get和set方法
3、教师类,有一个教课行为,定义成员方法,输出相应的信息
4、教师类定义完,在测试类中创建对象进行测试。
操作步骤
1、定义Teacher类,定义两个成员变量String name, String id,都使用private修饰
2、提供空参构造方法和有参构造方法,提供get和set方法
3、编写成员方法teach(),按照要求的格式将属性信息进行输出。
4、编写测试类TeacherTest,在主方法中创建教师对象,空参创建的对象通过setXxx赋值,有参创建的对象直接赋值。
5、调用teach方法。
参考代码
public class Teacher {
// 成员变量
private String name;
private String id;
public Teacher() {
}
public Teacher(String name, String id) {
this.name = name;
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
// 教课的方法
public void teach() {
System.out.println("工号为" + id + "的" + name + "老师正在讲课");
}
}
public class TeacherTest {
public static void main(String[] args) {
// 创建Teacher对象
Teacher t1 = new Teacher(); // 使用空参构造
t1.setName("张三");
t1.setId("001");
// 调用方法
t1.teach();
System.out.println("-------------");
Teacher t2 = new Teacher("李四","002"); // 使用带参构造
// 调用方法
t2.teach();
}
}