java面向对象的学习主线
java基础的语法是为了执行一段程序。这篇文章的主体是有一个逻辑思路解决javase是什么知识体系为什么要学这套知识体系。我们想一个概念。假如我们要执行一段程序。我们总不能光执行一个类里面的psvm方法于是我们就创造一个包的概念。一个类的软件包下面放一类的类。我们在写程序要用到其他类的时候。把其他类的成员变量实体化变成对象。使用其他类提供的方法来写程序。这样以后写一套代码。有了这套复用的方法就可以把代码复用化。一大套的代码相同的代码就可以利用起来。这样代码工程化就有基本的底子了。有了这个代码组织架子类和对象的概念。于是我们要学习更复杂的知识。javase的知识其实主体就围绕着1.多组合可以延伸组合和内部类2.单继承继承3.多实现接口多组合所谓的组合就是单继承与多态多实现在类的同级的层面你这段思考非常有条理我来帮你清晰地提炼成一篇结构化的文章既讲清楚“JavaSE是什么”也说明“为什么要学它”。一、JavaSE 是一个“代码组织与复用”的知识体系我们从最基础的目标说起执行一段程序。但如果我们永远只写一个public static void main(String[] args)方法在里面堆砌所有逻辑程序稍微一复杂就会崩溃——无法维护、无法复用、无法多人协作。所以 Java 设计了一套代码组织规则包package把功能相关的一组类放在一起避免命名冲突也方便管理。类class定义数据成员变量和行为方法。对象object把类实例化才能操作数据、调用方法。这样一来你写的一套代码可以被多次使用 →复用。不同的类各司其职 →工程化的基本底子就有了。二、有了类和对象之后为什么还要学更复杂的知识因为现实中的业务比“一个类单独干活”复杂得多。你会遇到很多类有相同的特性比如学生、老师、行政人员都是“人”很多类需要共用一套行为标准比如所有数据库连接都必须有关闭方法想要更灵活地组装功能而不是只靠继承于是JavaSE 的核心知识就集中在这三个维度1. 多组合Composition组合一个类里面持有另一个类的对象用它来干活。classEngine{voidstart(){...}}classCar{privateEngineenginenewEngine();voidrun(){engine.start();}}为什么需要组合继承太“重”组合更灵活运行时可以换对象。延伸内部类Inner Class也常用于组合场景比如让一个“迭代器”类直接访问外部类的私有数据。2. 单继承InheritanceJava 类是单继承一个子类只能有一个直接父类。classAnimal{voideat(){...}}classDogextendsAnimal{voidbark(){...}}为什么单继承避免菱形继承问题多个父类有同名方法。多态父类引用指向子类对象写出更通用的代码。AnimalanewDog();a.eat();// 实际执行的是 Dog 的 eat如果重写了有了继承 多态才能写出面向接口编程、开闭原则的代码。3. 多实现Interface一个类可以实现多个接口弥补单继承的局限。interfaceFlyable{voidfly();}interfaceSwimmable{voidswim();}classDuckimplementsFlyable,Swimmable{publicvoidfly(){...}publicvoidswim(){...}}接口定义“能做什么”不关心具体怎么做。多实现的价值让一个类拥有多种能力同时不破坏类的层次结构。三、总结JavaSE 到底是什么为什么要学维度答案JavaSE 是什么Java 标准版的核心语法和机制重点解决代码组织、复用、扩展、约束的问题。为什么要学没有这些机制你只能写“一次性脚本”有了它们你才能写出可维护、可扩展、团队协作的大型程序。一句话记住JavaSE 教给你的不是“怎么让程序跑起来”而是“怎么让程序在大规模、多人、长期维护下依然活得很好”。但是主线还是跑程序