Java-面向对象练习-01

选择题

题目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元黑色的小米手机发短信....

训练提示

  1. 类中的属性就是成员变量,类中的行为功能就是成员方法。

操作步骤

  1. 定义手机类,手机类中定义String类型的品牌,int类型的价格,String类型的颜色,
  2. 编写打电话的成员方法,方法中对成员变量进行使用。
  3. 编写发短信的成员方法,方法中对成员变量进行使用。
  4. 在测试类中创建手机对象,直接给对象的属性赋值,分别调用各个方法。

参考代码

手机类:
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();
    }
}

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值