以下是一份关于Java面向对象高级特性的学习笔记:
Java面向对象高级特性学习笔记
1. 接口(Interface)
- 定义:接口是一种完全抽象的类,用来定义一组规范
- 特点:
- 使用
interface
关键字定义 - 接口中的方法默认是
public abstract
- 接口中的变量默认是
public static final
- 类通过
implements
关键字实现接口 - 一个类可以实现多个接口
- 使用
public interface MyInterface {
// 接口中的变量默认是 public static final
int VALUE = 10;
// 接口中的方法默认是 public abstract
void method();
}
2. 抽象类与抽象方法
- 抽象类:包含抽象方法的类,用
abstract
关键字修饰 - 抽象方法:只有方法声明没有方法实现的方法
- 特点:
- 抽象类不能被实例化
- 子类必须重写父类的所有抽象方法,否则子类也必须是抽象类
public abstract class AbstractClass {
// 抽象方法
public abstract void abstractMethod();
// 普通方法
public void normalMethod() {
System.out.println("这是一个普通方法");
}
}
3. 多态(Polymorphism)
- 定义:同一个引用类型,使用不同的实例可以执行不同的行为
- 实现条件:
- 继承或实现关系
- 方法重写
- 父类引用指向子类对象
// 父类引用指向子类对象
Animal animal = new Dog();
animal.makeSound(); // 调用的是Dog类中重写的makeSound方法
4. 内部类(Inner Class)
- 成员内部类:作为外部类的成员变量
- 局部内部类:定义在方法内部
- 匿名内部类:没有名字的内部类,常用于事件处理
- 静态内部类:使用static修饰的内部类
public class OuterClass {
// 成员内部类
class InnerClass {
public void innerMethod() {
System.out.println("内部类方法");
}
}
// 静态内部类
static class StaticInnerClass {
public void staticInnerMethod() {
System.out.println("静态内部类方法");
}
}
}
5. 包(Package)
- 作用:
- 避免类名冲突
- 便于组织和管理类
- 使用:
- 使用
package
声明包 - 使用
import
导入其他包中的类
- 使用
package com.itheima.demo; // 声明包
import java.util.*; // 导入Java util包中的所有类
6. 访问修饰符
修饰符 | 同一个类 | 同一个包 | 不同包的子类 | 不同包的非子类 |
---|---|---|---|---|
private | ✓ | ✗ | ✗ | ✗ |
默认(default) | ✓ | ✓ | ✗ | ✗ |
protected | ✓ | ✓ | ✓ | ✗ |
public | ✓ | ✓ | ✓ | ✓ |
7. final关键字
- 修饰类:该类不能被继承
- 修饰方法:该方法不能被重写
- 修饰变量:该变量的值不能被修改(常量)
public final class FinalClass {
public final int VALUE = 100;
public final void finalMethod() {
// 该方法不能被重写
}
}
8. static关键字
- 静态变量:属于类,被所有实例共享
- 静态方法:属于类,可以通过类名直接调用
- 静态代码块:类加载时执行,用于初始化静态变量
public class StaticDemo {
static int count = 0; // 静态变量
static {
// 静态代码块
count = 10;
}
public static void staticMethod() {
// 静态方法
System.out.println("静态方法");
}
}
9. 设计模式初步
- 单例模式:确保一个类只有一个实例,并提供全局访问点
- 工厂模式:创建对象而不暴露创建逻辑