一、类和对象:万物皆可"模板化"
1.1 类与对象的关系
代码演示:
// 类定义示例:手机设计图 class Phone { String brand; // 品牌属性 void call() { // 打电话方法 System.out.println(" 正在拨号..."); } } // 创建对象:根据图纸造手机 Phone myPhone = new Phone();
1.2 成员变量 vs 局部变量
成员变量 | 局部变量 | |
---|---|---|
作用域 | 整个类内有效 | 仅在方法内部 |
默认值 | 自动初始化 | 必须手动赋值 |
生命周期 | 对象存在即存在 | 方法执行时存在 15 |
二、面向对象三大核心特性
2.1 封装:保护隐私的"保险箱"
代码演示:
class BankAccount { private double balance; // 私有化:钱锁在保险箱 // 存取钱需要通过验证(getter/setter) public void deposit(double money) { if(money > 0) this.balance += money; } }
2.2 继承:基因传递的"家族树"
代码演示:
// 父类:动物 class Animal { void eat() { System.out.println(" 吃东西"); } } // 子类继承父类能力 class Cat extends Animal { void meow() { System.out.println(" 喵喵叫"); } }
2.3 多态:百变星君的"变身术"
代码演示:
Animal animal = new Cat(); // 父类引用指向子类对象 animal.eat(); // 实际调用的是Cat的eat方法
三、小白必须掌握的语法基础
3.1 构造方法:对象的"出生证明"
代码演示:
class Student { String name; // 构造方法:创建对象时必须执行 public Student(String name) { this.name = name; } } // 创建对象时必须传参 Student stu = new Student("张三");
3.2 static关键字:共享的"公共资源"
代码演示:
class School { static String principal = "李校长"; // 所有学生共享的校长 static void ringBell() { // 不用创建对象就能调用 System.out.println(" 上课铃响了"); } }
四、常见误区避坑指南
4.1 对象未初始化
代码演示:
Phone badPhone; // 错误:未new对象 badPhone.call(); // 会报NullPointerException
4.2 == 和 equals 的区别
代码演示:
String s1 = new String("hello"); String s2 = new String("hello"); System.out.println(s1 == s2); // false(比较内存地址) System.out.println(s1.equals(s2)); // true(比较内容)
4.3 方法重载 vs 重写
重载(Overload) | 重写(Override) | |
---|---|---|
发生位置 | 同一类中 | 父子类之间 |
参数列表 | 必须不同 | 必须相同 |
返回类型 | 可修改 | 必须相同或兼容 5 |
五、动手实践建议
- 创建一个
Book
类,包含书名、价格属性 - 添加构造方法初始化属性
- 编写
displayInfo()
方法显示书籍信息 - 创建多个Book对象并测试方法
代码演示:
// 参考答案 class Book { String title; double price; public Book(String t, double p) { title = t; price = p; } void displayInfo() { System.out.println(title + " 价格:" + price); } }