编程自学指南:java程序设计开发,面向对象基础
学习目标:
-
理解类与对象的概念及关系
-
掌握封装、继承、多态三大特性
-
能够设计简单的类结构并实现对象交互
-
用面向对象思维解决实际问题
一、课程引入
1.1 面向对象 vs 面向过程
-
生活类比:
-
面向过程:如何做菜 → 一步步执行(洗菜、切菜、炒菜)
-
面向对象:谁来做菜 → 定义厨师、食材、厨具等对象协作
-
-
核心思想:用对象模拟现实世界,提高代码复用性和扩展性
1.2 面向对象三大特性
-
封装:隐藏内部实现细节(如手机内部电路不可见)
-
继承:子类复用父类特性(如猫和狗继承自动物)
-
多态:同一方法不同实现(如不同动物叫声不同)
二、类与对象
2.1 类的定义
语法
public class 类名 {
// 属性(成员变量)
// 方法(成员方法)
}
案例1:学生类
public class Student {
// 属性
String name;
int age;
// 方法
public void study() {
System.out.println(name + "正在学习");
}
}
2.2 对象的创建与使用
// 创建对象
Student stu1 = new Student();
// 属性赋值
stu1.name = "张三";
stu1.age = 18;
// 调用方法
stu1.study();
案例2:汽车类
public class Car {
String brand;
String color;
public void run() {
System.out.println(color + "的" + brand + "正在行驶");
}
}
// 测试类
Car myCar = new Car();
myCar.brand = "Toyota";
myCar.color = "黑色";
myCar.run();
三、封装
3.1 封装的实现
-
步骤:
-
属性私有化(
private
) -
提供公共的getter/setter方法
-
案例3:银行账户类
public class BankAccount {
private String accountId;
private double balance;
// getter/setter
public double getBalance() {
return balance;
}
public void deposit(double amount) {
if (amount > 0) {
balance += amount;
}
}
}
// 使用示例
BankAccount account = new BankAccount();
account.deposit(1000);
System.out.println("余额:" + account.getBalance());
3.2 构造方法
案例4:带构造方法的图书类
public class Book {
private String title;
private String author;
public Book(String title, String author) {
this.title = title;
this.author = author;
}
}
// 创建对象
Book book = new Book("Java编程思想", "Bruce Eckel");
四、继承与多态
4.1 继承的实现
// 父类
public class Animal {
public void eat() {
System.out.println("动物在吃东西");
}
}
// 子类
public class Dog extends Animal {
@Override
public void eat() {
System.out.println("狗在啃骨头");
}
public void bark() {
System.out.println("汪汪叫");
}
}
案例5:继承应用
Animal animal = new Dog();
animal.eat(); // 输出"狗在啃骨头"(多态)
// animal.bark(); // 编译错误:Animal类无此方法
4.2 多态的应用
案例6:图形类多态计算面积
public abstract class Shape {
public abstract double getArea();
}
public class Circle extends Shape {
private double radius;
public Circle(double radius) {
this.radius = radius;
}
@Override
public double getArea() {
return Math.PI * radius * radius;
}
}
// 测试多态
Shape shape = new Circle(5.0);
System.out.println("圆形面积:" + shape.getArea());
五、综合应用与错误分析
5.1 综合案例
案例7:简易图书馆管理系统
public class Library {
private List<Book> books = new ArrayList<>();
public void addBook(Book book) {
books.add(book);
}
public void showBooks() {
for (Book book : books) {
System.out.println(book.getTitle());
}
}
}
5.2 常见错误
-
错误1:混淆类与对象
Student.name = "张三"; // 错误:未创建对象直接访问成员
错误2:继承滥用
public class Email extends Message {} // 错误:Email不是Message的一种
六、总结与练习
6.1 总结
-
类与对象:类是蓝图,对象是实例
-
三大特性:
-
封装:保护数据安全
-
继承:实现代码复用
-
多态:增强扩展性
-
6.2 课后任务
-
设计一个
Person
类及其子类Student
、Teacher
,实现多态方法introduce()
-
实现一个商品管理系统(商品类+购物车类)
-
预习下一节课:面向对象高级特性(抽象类、接口)
6.3 扩展挑战
-
用面向对象思想设计一个简单的游戏角色系统(包含职业、技能、属性)