实验项目名称 | 实验2 Java面向对象程序设计 |
实验目的和要求 | |
| |
实验内容 | |
| |
主要仪器设备 | 台式或笔记本电脑 |
实验记录(写出实验内容中1、2的程序代码和运行结果)(可分栏或加页) | |
1、第一题代码如下: import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String dogName = sc.next(); String dogSex = sc.next(); String dogColor = sc.next(); String catName = sc.next(); String catSex = sc.next(); double catWeight = sc.nextDouble(); Dog dog = new Dog(dogName, dogSex, dogColor); dog.talk(); dog.eat(); Cat cat = new Cat(catName, catSex, catWeight); cat.talk(); cat.eat(); } } abstract class Pet { private String name; private String sex; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public Pet(String name, String sex) { this.name = name; this.sex = sex; } public abstract void talk(); public abstract void eat(); } class Dog extends Pet { private String color; public String getColor() { return color; } public void setColor(String color) { this.color = color; } public Dog(String name, String sex, String color) { super(name, sex); this.color = color; } public void talk() { System.out.println("名称:" + this.getName() + ",性别:" + this.getSex() + ",颜色:" + this.getColor() + ",汪汪叫"); } public void eat() { System.out.println(this.getName() + "吃骨头!"); } } class Cat extends Pet { private double weight; public double getWeight() { return weight; } public void setWeight(double weight) { this.weight = weight; } public Cat(String name, String sex, double weight) { super(name, sex); this.weight = weight; } public void talk() { System.out.println("名称:" + this.getName() + ",性别:" + this.getSex() + ",体重:" + this.getWeight() + "kg" + ",喵喵叫"); } public void eat() { System.out.println(this.getName() + "吃鱼!"); } } 实验内容一运行结果: 2、第二题代码如下: import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String cName = sc.next(); String cSex = sc.next(); int cAge = sc.nextInt(); String eName = sc.next(); String eSex = sc.next(); int eAge = sc.nextInt(); Main test = new Main(); Person person1 = new Chinese(cName, cSex, cAge); test.showEat(person1); Person person2 = new English(eName, eSex, eAge); test.showEat(person2); Chinese chinese = (Chinese) person1; chinese.shadowBoxing(); English english = (English) person2; english.horseRiding(); } public void showEat(Person person){ person.eat(); } } abstract class Person { private String name; private String sex; private int age; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public Person(String name, String sex, int age) { this.name = name; this.sex = sex; this.age = age; } public abstract void eat(); } class Chinese extends Person { public Chinese(String name, String sex, int age) { super(name, sex, age); } public void eat() { System.out.println("姓名:" + this.getName() + ",性别:" + this.getSex() + ",年龄:" + this.getAge() + ",我是中国人,我喜欢吃饭!"); } public void shadowBoxing() { System.out.println(this.getName() + "在练习太极拳!"); } } class English extends Person { public English(String name, String sex, int age) { super(name, sex, age); } public void eat() { System.out.println("姓名:" + this.getName() + ",性别:" + this.getSex() + ",年龄:" + this.getAge() + ",我是英国人,我喜欢吃三明治!"); } public void horseRiding() { System.out.println(this.getName() + "在练习骑马!"); } } 实验内容二运行结果: | |
遇到的问题和解决方法 | |
1、问题:面向对象编程的概念(如封装、继承、多态等)理解困难,难以将这些概念具体应用到实际编程中。 解决方法:通过阅读相关教材、观看视频教程,尝试通过实际例子理解这些概念。可以编写简单的代码示例,比如创建类、继承、方法重写等,以加深理解。 2、问题:对于抽象类和接口的定义、使用不够熟练,难以区分它们的适用场景。 解决方法:深入理解抽象类和接口的概念,分析它们的区别和作用。尝试编写简单的例子,比较它们的使用场景和特点,实际应用中的优缺点。 3、问题:对于static和final关键字的使用场景和作用理解不够清晰,可能出现误用或未充分利用的情况。 解决方法:仔细研究和理解static和final的含义和用法。静态变量、方法、块和final变量、方法、类的特性需要深入了解,并逐步在实际项目中应用。 4、问题:在设计类时,可能遇到封装不够严密、设计不合理的情况,导致代码复杂或不易维护。 解决方法:学习良好的封装习惯,保证类的私有成员仅在需要的情况下暴露,采用合理的访问控制。通过重构代码、优化设计,提高代码的可读性和可维护性。 | |
心得体会 | |
首先,熟练运用Java语言进行面向对象程序设计是构建复杂程序的基础。通过掌握类、对象、方法等基本概念,我能够更清晰地组织和设计程序结构,使得程序更易读、易维护。 其次,深入理解面向对象的封装、继承和多态等特性对于设计高质量的程序至关重要。封装提高了代码的安全性和可靠性,继承提高了代码的复用性和可扩展性,而多态使得程序更灵活、更易于扩展。我学会了如何正确地应用这些特性来提高程序的质量和效率。 第三,熟练掌握类、继承、包和接口的应用是编写优秀Java程序的关键。正确使用类的构造方法、成员变量、成员方法等元素,合理划分类和包的结构,设计良好的接口使得程序更具扩展性和灵活性。 其次,抽象类和接口是面向对象编程中的重要概念。通过学习和实践,我理解了抽象类和接口的概念,并学会了如何正确地定义和应用它们,使得程序更具可拓展性和适应性。 最后,关键字static和final在Java中的应用也是非常重要的。static关键字用于定义类方法和变量,final关键字用于定义不可修改的常量或方法、类等。我学会了如何正确使用这些关键字来满足程序的需求,提高程序的效率和安全性。 |
太原理工大学java实验报告-实验二
最新推荐文章于 2024-05-24 17:33:33 发布
![](https://img-home.csdnimg.cn/images/20240611030827.png)