Java基础学习【Java】【三】
众所周知,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 {
@Override
void sound() {
System.out.println("喵喵~");
}
}
class Duck extends Animal {
@Override
void 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. 方法重写:子类覆盖父类方法