命名规范:公司域名反写 + 功能描述
,全小写,见名知意。
com.itheima.domain
(描述领域模型相关类)。代码示例:
package com.itheima.domain;
public class Student {
// 成员变量、构造方法、成员方法
}
不需要导包的情况:
java.lang
包中的类(如String
、System
)。需要导包的情况:
包名.类名
)。import com.itheima.domain.Student;
public class Test {
public static void main(String[] args) {
Student s = new Student(); // 导包后直接使用
java.util.Date date = new java.util.Date(); // 全类名避免冲突
}
}
基本类型:值不可变(常量)。
引用类型:地址不可变,但对象内部属性可修改。
final double PI = 3.14; // 基本类型常量
final Student s = new Student("张三", 23);
s.setName("李四"); // 允许修改对象属性
// s = new Student(); // 报错:地址不可变
final
方法禁止子类覆盖。public class Parent {
public final void show() {
System.out.println("父类最终方法");
}
}
final
类无法被其他类继承(如String
类)。public final class ImmutableClass {
// 最终类,不可被继承
}
修饰符 | 同类 | 同包 | 不同包子类 | 不同包无关类 |
---|---|---|---|---|
private |
✔️ | ❌ | ❌ | ❌ |
默认 |
✔️ | ✔️ | ❌ | ❌ |
protected |
✔️ | ✔️ | ✔️ | ❌ |
public |
✔️ | ✔️ | ✔️ | ✔️ |
private
封装数据,通过Getter/Setter访问。public
修饰。private
。public void method() {
int a = 10;
{
int b = 20; // 仅在此代码块内有效
}
}
public class Student {
{
System.out.println("创建对象时执行"); // 每次构造都执行
}
}
public class Config {
static {
System.out.println("加载配置文件"); // 类加载时执行一次
}
}
抽象方法:只有声明,无方法体(abstract
修饰)。
抽象类:包含抽象方法的类必须声明为abstract
。
public abstract class Animal {
public abstract void eat(); // 抽象方法
public void drink() {
System.out.println("喝水"); // 普通方法
}
}
不可实例化:抽象类不能直接创建对象。
子类约束:子类必须重写所有抽象方法,否则自身需声明为抽象类。
public class Cat extends Animal {
@Override
public void eat() {
System.out.println("猫吃鱼");
}
}
成员变量:默认public static final
(常量)。
成员方法:
public abstract
)。default
)和静态方法(static
)。private
)。public interface Swim {
// 常量
String TYPE = "游泳接口";
// 默认方法
default void start() {
System.out.println("开始游泳");
}
// 静态方法
static void stop() {
System.out.println("停止游泳");
}
}
类与接口:实现关系(implements
),可多实现。
接口与接口:继承关系(extends
),可多继承。
public class Frog implements Swim, Jump { // 多实现
// 实现接口方法
}
public interface Amphibian extends Swim, Jump { // 多继承
}
public class Car {
class Engine {
void start() {
System.out.println("引擎启动");
}
}
}
// 创建对象
Car.Engine engine = new Car().new Engine();
static
修饰,只能访问外部类的静态成员。public class Outer {
static class Inner {
void show() {
System.out.println("静态内部类");
}
}
}
// 创建对象
Outer.Inner inner = new Outer.Inner();
Runnable task = new Runnable() {
@Override
public void run() {
System.out.println("匿名内部类任务");
}
};
public static void invokeSwim(Swim s) {
s.swim();
}
// 调用
invokeSwim(new Swim() {
@Override
public void swim() {
System.out.println("匿名实现游泳");
}
});
掌握这些细节,能显著提升代码的可维护性与扩展性!