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);
}
}
************************************************