三星官方网站和业务多一样的平台
众所周知,Java面向对象的特性借鉴了c++的模型,而语法继承自C语言,因此,之后的学习与C语言基础的关系不大,主要是面向对象的内容。(持续更新修改中)
一、类与对象基础
1. 类
在Java中,类是构建对象的蓝图或模板。通过类,我们可以定义对象的属性(状态)和方法(行为)。你可以将类理解为描述某些事物的属性和行为的集合,比如说,以狗为实例,类将描述狗的名字、年龄、颜色等,描述狗会做的行为,如叫、肚子饿等,类就是描述某些事物的一个大型容器。
// 类模板
public class Dog {// 成员变量(属性)String name;int age;String color;// 方法(行为)void barking() {System.out.println("汪汪!");}void hungry() {System.out.println("肚子饿了...");}
}
2. 对象
在Java中,对象是类的实例,代表特定类型的实体。你可以将对象理解为通过类创建的具体的事物,比如,你可以通过事先写好的类来创建一只狗,狗所具有的行为和属性由类中定义的来确定,类中没有的属性,狗也没有。
public class Main {public static void main(String[] args) {// 创建对象Dog myDog = new Dog();// 访问属性myDog.name = "金毛";myDog.age = 3;// 调用方法myDog.barking(); // 输出:汪汪!}
}
二、构造函数
1. 默认构造函数
public class Book {String title; // 默认构造方法(编译器自动生成)public Book() {}
}
2. 带参数构造函数
public class Book {String title;String author;// 自定义构造方法public Book(String title, String author) {this.title = title; // this指当前对象this.author = author;}
}
// 使用:
Book novel = new Book("Java编程思想", "Bruce Eckel");
三、成员变量 vs 局部变量
public class Student {// 成员变量(类范围内有效)String name; public void setAge(int age) { // age是局部变量int temp = 20; // 局部变量(方法内有效)this.age = age + temp;}
}
四、封装与访问控制
public class BankAccount {// private实现封装private double balance; // public方法提供访问接口public double getBalance() {return balance;}public void deposit(double amount) {if(amount > 0) {balance += amount;}}
}
五、继承
// 父类
class Animal {void eat() {System.out.println("吃东西");}
}
// 子类继承
class Dog extends Animal {void bark() {System.out.println("汪汪叫");}@Override // 方法重写void eat() {super.eat(); // 调用父类方法System.out.println("狗啃骨头");}
}
// 使用:
Dog myDog = new Dog();
myDog.eat(); // 输出:吃东西 → 狗啃骨头
六、多态
class Animal {void sound() {System.out.println("动物发出声音");}
}
class Cat extends Animal {@Overridevoid sound() {System.out.println("喵喵~");}
}
class Duck extends Animal {@Overridevoid sound() {System.out.println("嘎嘎!");}
}
// 测试多态:
Animal animal1 = new Cat();
Animal animal2 = new Duck();
animal1.sound(); // 输出:喵喵~
animal2.sound(); // 输出:嘎嘎!
关键概念总结:
1. 类是模板,对象是类的实例
2. 构造函数用于对象初始化
3. 封装通过访问修饰符实现
4. 继承实现代码复用(单继承)
5. 多态通过方法重写实现
6. static成员属于类而非对象
7. 方法重载:同名不同参
8. 方法重写:子类覆盖父类方法