ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Java面向对象核心知识点

Java面向对象核心知识点 一、类与对象1.1 核心概念类对一类事物的抽象描述对象由类创建出的具体实例属性对象的数据和状态方法对象的行为// 定义 Student 类用于描述“学生”这一类对象publicclassStudent{// 成员变量记录学生姓名privateStringname;// 成员变量记录学生年龄privateintage;// 成员方法描述学生的学习行为publicvoidstudy(){// 输出当前学生的姓名和行为System.out.println(name 正在学习);}// 创建 Student 类的对象student 是引用变量StudentstudentnewStudent();// 调用对象的方法student.study();}1.2 构造方法构造方法用于在创建对象时初始化属性publicclassStudent{privateStringname;privateintage;// 构造方法创建对象时自动调用publicStudent(Stringname,intage){// this.name 表示当前对象的成员变量// 右侧 name 表示传入的参数this.namename;this.ageage;}// 创建对象时将“张三”和 18 传给构造方法StudentstudentnewStudent(张三,18);}remark构造方法名必须与类名一致构造方法没有返回值类型不写void构造方法不能被继承二、封装2.1 概念封装的核心隐藏内部数据只暴露合理、安全的访问方式。2.2 访问权限修饰符**封装的标准做法**属性用private对外提供public的getter/setter方法publicclassUser{// 用户名不允许被外部直接修改privateStringusername;// 获取用户名publicStringgetUsername(){returnusername;}// 设置用户名publicvoidsetUsername(Stringusername){// 可以在这里补充用户名校验逻辑this.usernameusername;}}2.3 静态资源staticstatic修饰的变量和方法属于类不属于某个对象所有对象共享同一份静态变量静态方法中不能直接访问非静态成员通过 类名.静态成员 调用classStudent{staticStringschool清华;// 静态变量所有对象共享Stringname;// 实例变量Student(Stringname){this.namename;}voidshow(){// 实例方法可访问静态和实例System.out.println(name在school);}staticvoidshowSchool(){// 静态方法只能直接访问静态System.out.println(school);// System.out.println(name); // 报错}publicstaticvoidmain(String[]args){Students1newStudent(小明);Students2newStudent(小红);Student.school北大;// 类名.静态成员所有对象共享s1.show();// 小明在北大s2.show();// 小红在北大Student.showSchool();// 北大}}2.4 常量static finalpublicstaticfinaldoublePI3.1415926;static属于类全局共享finally值不可修改常量命名规范全大写单词间用下划线分隔三、继承3.1 继承格式class子类extends父类{//子类新增的属性和方法}Java是单继承一个类只能有一个直接父类子类继承了父类的非私有属性和方法构造方法不能被继承但可以通过super()调用私有成员private不能被直接访问3.2 方法重写子类重新定义了父类中已有的方法方法名、参数列表、返回类型或协变返回类型必须相同。VS重载重载 同一个类里方法名相同但参数不同类型、个数、顺序不一样。调用时Java 根据你传的参数自动匹配对应的方法3.3 子类替代父类里氏替换原则父类引用可以指向子类对象AnimalanewDog();四、接口与实现4.1 类与接口的区别类接口extends单继承implements多实现描述“是什么”描述“能做什么”有构造方法无构造方法4.2 接口的格式publicinterfaceFlyable{//常量intMAX_SPEED1000;//抽象方法voidfly();//默认方法defaultvoidland(){System.out.println(降落);}// 静态方法staticvoidinfo(){System.out.println(飞行接口);}}4.3 接口的作用定义规范/契约规定实现类必须提供哪些方法。解耦调用方只依赖接口不依赖具体实现。多态扩展一个接口可以有多个实现类运行时动态替换。弥补单继承限制类可以实现多个接口获得多种能力。框架设计基础如 List、Map、Comparable、Runnable 等。五、多态5.1 核心实现多态父类引用指向子类对象方法重写自动转型AnimalanewDog();// 向上转型a.sound();// 调用的是 Dog 重写后的 sound()编译时检查Animal类中是否有sound()方法运行时实际执行的是Dog对象重写的sound()方法5.2 多态的好处提高代码的扩展性和可维护性调用时只需面向父类/接口编程无需关心具体实现六、泛型6.1 概念泛型类型的模板在定义类、接口、方法是预设一个未知类型的T在使用时再指定具体类型6.2 泛型的好处编译时类型安全错误在编译期就被发现。消除强制类型转换。代码复用一套代码处理多种类型。七、注解7.1 概念注解是一种元数据为代码提供额外信息本身不影响程序逻辑但可以被编译器或反射读取。7.2 与反射合作注解在系统初始化时完成一些工作典型流程定义注解如 MyAnnotation。在类/方法/字段上使用注解。通过反射在运行时读取注解信息执行相应逻辑如 Spring 的 Autowired 自动注入。7.3 常见注解注解作用Override标记方法重写编译时检查Deprecated标记已过时SuppressWarnings抑制编译警告FunctionalInterfave标记函数式接口八、反射8.1 概念反射 在运行时动态获取类的信息并能操作对象的属性、方法、构造方法8.2 动态加载反射可以直接通过源文件.class 文件进行初始化加载无需在编译时确定具体类。例如Class?clazzClass.forName(com.mysql.cj.jdbc.Driver);这行代码就是 JDBC 注册驱动的核心原理——通过反射动态加载 MySQL 驱动类。8.3 反射核心类类作用Class?代表类的字节码对象Constructor?代表构造方法Method代表方法Field代表属性九、总结类与对象 ──▶ 封装private getter/setter│▼继承extends──▶ 方法重写 ──▶ 多态父类引用指向子类对象│▼接口implements──▶ 多实现、解耦、规范│▼泛型──▶ 类型安全、代码复用│▼注解──▶ 元数据│▼反射Class──▶ 动态加载、框架底层
返回列表