欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

javaSE各阶段练习题---面向对象-类与对象、封装、构造方法(1

程序员文章站 2024-03-25 23:47:16
...
1-8题抽查提问,能够使用给自己的语言表述
1、什么是面向对象?
	1、是一种编程思想
	JAVA语言是一种面向对象的程序设计语言,而面向对象思想是一种程序设计思想。我们在面向对象思想的指引下,
使用java语言设计、开发计算机程序。这里的对象泛指,现实中的一切事物,每个事物都具备自己的属性和行为。面向
对象思想就是在计算机程序设计过程中,参照现实中的事物,将事物的属性特征和行为特征凑想出来,描述成计算机
事件的设计思想。
	2、和面向过程的区别
	它区别于面向过程思想,强调的是调用对象的行为来实现功能,而不是自己一步一步是去操作实现。
	也就是说面向过程强调步骤,面向对象强调对象。
	3、面向对象的好处
	面向对象思想是一种更符合我们思考习惯的思想,他可以把复杂的事情简单化,并将我们从执行者变成了指挥者。	
	4、面向对象的特征
	面向对象的特征:封装,继承,多态
	*面向对象的封装性,即将对象封装成一个高度自治和相对封闭的个体,对象状态(属性)由这个对象自己的行为
来读取和改变。
	*抽象就是找出一些事物的相似和共性之处,然后将这些事物归为一个类,这个类只考虑这些事物的相似和共性之处
并且会忽略与当前主题和目标无关,将注意力集中在与当前目标相关的方面,就是把现实中的对象,抽象为类。
	*多态指程序中定义的引用变量所指向的具体类型,和通过该引用变量发出的方法调用在编程时并不确定,而是在
程序运行时,即一个引用变量发出的方法调用到底是哪一类中实现的方法,必须在由程序运行期间决定。
	5、举例子
	比如洗衣服
	面向对象:把衣服脱下来-->打开全自动洗衣机-->扔衣服-->按钮-->晾起来
2、面向对象的三大思想特征是什么?
	封装,继承,多态
3、什么是类,什么是对象?
	用来抽象表示现实事物的基本单位是类。
	对象:是一类事物的具体体现,对象是类的一个实例,必然具备该类事物的属性和行为。
	类是对一类事物的描述,是抽象的。
	对象是一类事物的实例,是具体的。
	类是对象的模板,对象是类的实体/实例。
4、如何使用类中的成员变量和成员方法?
	成员变量:对应事物的属性 
	成员方法:对应事物的行为
	如何使用,
	对象名.成员变量;
	对象名.成员方法();例如:
	public class Student{
		//定义成员变量
		String name;
		int age;
		String gender;
		//定义成员方法
		public void study(){
			System.out.println("好好学习,天天向上");
		}
	}
	public class TestStudent{
		public static void main(String[] args){
			Student student = new Student();
			//使用成员变量
			student.name = "李孟冬";
			//使用成员方法
			student.study();
		}
	}
5、成员变量和局部变量的区别有哪些?
                   成员变量                  局部变量  
在类中的位置	 类中,方法外            方法中或者方法声明上(形式参数)              
作用范围         类中                    方法中		  
初始值           有默认值                没有默认值。必须先定义、赋值、然后在使用
内部中的位置     堆内存                  栈内存       
生命周期         随着对象的创建而存在    随着方法的调用而存在		  
		         随着对象的消失而消失    随着方法的调用完毕而消失
		  
6、什么是匿名对象?什么时候使用?
	匿名对象就是没有名字的对象。
	当对方法只进行一次调用的时候,可以使用匿名对象。
	
7、什么是封装?封装的好处,原则分别是什么?
	将代码中的属性隐藏起来,若需要访问某个属性,提供公共方法对其访问。这就是封装。
	好处:1.是一个保护屏障,防止该类的代码和数据被其他类随意访问。
		  2.适当的封装可以让代码更容易理解与维护,也加强了代码的安全性。
	原则:
	1. 使用 private 关键字来修饰成员变量。
	2. 对需要访问的成员变量,提供对应的一对 getXxx 方法(获取值) 、setXxx(设置值/赋值) 方法。
	3. 其他地方要操作可以通过getXxx和setXxx方法来操作

8、this的作用是什么?
this代表所在类的当前对象的引用(地址值),即对象自己的引用。
记住 :方法被哪个对象调用,方法中的this就代表那个对象。即谁在调用,this就代表谁。

9、根据如下需求,完成代码(按照标准格式写:属性私有,提供get、Set方法),然后在测试类中测试。
	需求一:
		手机类Phone
			属性:品牌brand,价格price
			行为:打电话call,发短信sendMessage,玩游戏,playGame
	需求二:
		人类Person
			属性:姓名name,年龄age,性别gender
			行为:学习study,睡觉sleep

	需求三:
		动物类Animal
			属性:姓名name,年龄age
			行为:吃饭eat
	需求四:
		狗类Dog
			属性:姓名name,年龄age
			行为:吃饭eat,看家lookHome
	需求五:
		猫类Cat
			属性:姓名name,年龄age
			行为:吃饭eat,抓老鼠catchMouse
	需求六:
		学生类Student
			属性:语文成绩chinese,数学成绩math,英语成绩english
			行为:求总成绩的方法getSum()

	需求七:
		长方形类
			属性:
			行为:求取长方形的周长和面积
			
//测试类
package com.henu;

public class TestAllObject {

	public static void main(String[] args) {
		
		//Phone
		Phone phone = new Phone("华为",3499.00);
		System.out.println(phone);
		phone.call();
		phone.sendMessage();
		phone.playGame();
		/*
		 * 输出:
		 * Phone [brand=华为, price=3499.0]
		 * 	华为可以打电话!!!
			华为还可以发信息!!!
			华为还可以玩游戏!!!
		 */
		
		//Person
		Person person = new Person("李孟冬",22,"男");
		System.out.println(person);
		person.study();
		person.sleep();
		/*
		 * 输出结果:
		 * 	Person [name=李孟冬, age=22, gender=男]
			李孟冬学习中
			等到了0点李孟冬就睡觉了
		 */
		
		//Animal
		Animal animal = new Animal();
		animal.eat();
		/*
		 * 输出:
		 * 我是藏獒,我一顿能吃100块骨头!
		 */
		
		//Dog
		Dog dog = new Dog();
		dog.lookHome();
		dog.eat();
		/*
		 * 输出:
		 * 	我要好好看家不然主人就不给我吃的了!
			耶!主人回来了,大骨头...
		 */
		
		//Cat
		Cat cat = new Cat();
		cat.eat();
		cat.catchMouse();
		/*
		 * 输出:
		 * 	我爱吃饭!!!身体好好!!!
			吃饱了就可以减肥了,最好的锻炼方法当然是抓老鼠!
		 */
		
		//Student
		Student student = new Student(150,150,150);
		System.out.println(student);
		student.getSum();
		/*
		 * 输出:
		 * 	Student [chinese=150, math=150, english=150]
			你的总成绩是450
		 */
		
		//长方形类
		Rectangle rectangle = new Rectangle(20,10);
		rectangle.getPerimeter();
		rectangle.getArea();
		/*
		 * 输出:	周长为:60
				面积为:200
		 * 
		 */
	}

}

其他实体类(按测试类顺序进行)
package com.henu;


public class Phone {
	private String brand;
	private Double price;
	
	

	@Override
	public String toString() {
		return "Phone [brand=" + brand + ", price=" + price + "]";
	}

	public Phone(String brand, Double price) {
		super();
		this.brand = brand;
		this.price = price;
	}

	public Phone() {
		super();
		// TODO Auto-generated constructor stub
	}

	public void call() {
		System.out.println(brand+"可以打电话!!!");
	}
	
	public void sendMessage() {
		System.out.println(brand+"还可以发信息!!!");
	}
	
	public void playGame() {
		System.out.println(brand+"还可以玩游戏!!!");
	}

	public String getBrand() {
		return brand;
	}

	public void setBrand(String brand) {
		this.brand = brand;
	}

	public Double getPrice() {
		return price;
	}

	public void setPrice(Double price) {
		this.price = price;
	}
	
	
}

************************************************

package com.henu;


public class Person {
	private String name;
	private int age;
	private String gender;
	public Person() {
	}
	public Person(String name, int age, String gender) {
		this.name = name;
		this.age = age;
		this.gender = gender;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public String getGender() {
		return gender;
	}
	public void setGender(String gender) {
		this.gender = gender;
	}
	@Override
	public String toString() {
		return "Person [name=" + name + ", age=" + age + ", gender=" + gender + "]";
	}
	
	public void study() {
		System.out.println(name+"学习中");
	}
	public void sleep() {
		System.out.println("等到了0点"+name+"就睡觉了");
	}
	
}

************************************************
package com.henu;

public class Animal {
	private String name;
	private int age;
	
	
	public String getName() {
		return name;
	}


	public void setName(String name) {
		this.name = name;
	}


	public int getAge() {
		return age;
	}


	public void setAge(int age) {
		this.age = age;
	}


	public void eat() {
		System.out.println("我是藏獒,我一顿能吃100块骨头!");
	}
}

************************************************
package com.henu;

public class Dog {
	private String name;
	private int age;	
	
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public void lookHome() {
		System.out.println("我要好好看家不然主人就不给我吃的了!");
	}
	public void eat() {
		System.out.println("耶!主人回来了,大骨头...");
	}	
}

************************************************
package com.henu;

public class Cat {
	private String name;
	private int age;
	
	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

	public void eat() {
		System.out.println("我爱吃饭!!!身体好好!!!");
	}
	
	public void catchMouse() {
		System.out.println("吃饱了就可以减肥了,最好的锻炼方法当然是抓老鼠!");
	}
}


************************************************
package com.henu;

public class Student {
	private int chinese;
	private int math;
	private int english;
	public Student() {
		super();
		// TODO Auto-generated constructor stub
	}
	public Student(int chinese, int math, int english) {
		super();
		this.chinese = chinese;
		this.math = math;
		this.english = english;
	}
	public int getChinese() {
		return chinese;
	}
	public void setChinese(int chinese) {
		this.chinese = chinese;
	}
	public int getMath() {
		return math;
	}
	public void setMath(int math) {
		this.math = math;
	}
	public int getEnglish() {
		return english;
	}
	public void setEnglish(int english) {
		this.english = english;
	}
	@Override
	public String toString() {
		return "Student [chinese=" + chinese + ", math=" + math + ", english=" + english + "]";
	}
	
	public void getSum() {
		System.out.println("你的总成绩是"+(chinese+math+english));
	}
}


************************************************
package com.henu;

public class Rectangle {
	private int length;
	private int width;
	public Rectangle() {
		super();
		// TODO Auto-generated constructor stub
	}
	public Rectangle(int length, int width) {
		super();
		this.length = length;
		this.width = width;
	}
	public int getLength() {
		return length;
	}
	public void setLength(int length) {
		this.length = length;
	}
	public int getWidth() {
		return width;
	}
	public void setWidth(int width) {
		this.width = width;
	}
	@Override
	public String toString() {
		return "Rectangle [length=" + length + ", width=" + width + "]";
	}
	
	public void getPerimeter() {
		System.out.println("周长为:"+ (length+width)*2);
	}
	public void getArea() {
		System.out.println("面积为:"+ length*width);
	}
}

************************************************