java的封装、继承、多态。大驼峰:类名、全局常量、类内常量。小驼峰:方法名、参数、成员变量、局部变量。常量命名应该全部大写,单词间用下画线隔开,力求语义表达完整清楚。在if、else、for、while、do-while等语句中必须使用大括号。即使只有一行代码也需要加上大括号。 ### Java基础课程1知识点梳理 #### 一、面向对象编程(OOP) 面向对象编程是一种软件开发方法论,它强调以对象为核心,通过封装、继承、多态等特性提高代码的可维护性、可重用性和可扩展性。 ##### 1.1 OOP理念 面向对象编程实践了软件工程的三个主要目标: - **可维护性**:通过良好的设计和编码规范,使得代码易于理解和修改。 - **可重用性**:通过组件化的设计,让代码可以在多个项目中重复使用。 - **可扩展性**:当需求发生变化时,可以轻松地对现有代码进行扩展而无需大幅度修改。 ##### 1.2 面向对象三大特性 - **封装**:封装是一种隐藏对象内部细节并提供公共接口的方式来保护数据的方法。封装通过以下方式实现: - 将属性声明为私有(private),并通过公共(public)的getter和setter方法暴露给外部。 - 限制类的可见性,例如使用private或protected关键字。 - 使用抽象类和接口来定义行为而隐藏实现细节。 - **继承**:继承允许创建一个新类(子类)继承现有类(父类)的特性和行为。这有助于减少代码冗余,并支持代码的复用。关于继承的一些要点包括: - **继承关系是否满足is-a关系**:子类应当是父类的一种特殊形式,即“子类 is-a 父类”。 - **里氏替换原则(LSP)**:任何能接受父类的地方都能接受子类。这一原则确保了继承的正确使用。 - **初始化顺序**:父类属性初始化->父类构造方法->子类属性初始化->子类构造方法。 - 如果父类没有构造方法,子类构造方法会隐式调用父类的无参构造方法。 - 如果父类有构造方法,则子类必须显式调用父类的构造方法,通常使用`super()`或`super(参数)`。 - **多态**:多态性允许一个接口被不同类型的对象实例化,从而展现出不同的行为。多态的实现方式包括: - 方法重载(Overloading):在同一类中,允许存在一个以上的同名方法,只要它们的参数列表不同即可。 - 方法覆盖(Overriding):子类可以重新定义其父类的方法,以提供特定于子类的实现。 - 接口实现:一个类可以实现多个接口,每个接口可以有自己的实现。 #### 二、Java命名约定 - **大驼峰命名法**:用于类名、全局常量和类内常量。每个单词首字母大写,没有空格或下划线分隔。例如:`ClassName`、`GLOBAL_CONSTANT`。 - **小驼峰命名法**:用于方法名、参数、成员变量和局部变量。第一个单词首字母小写,之后每个单词首字母大写。例如:`methodName`、`memberVariable`。 - **常量命名**:常量全大写,单词间用下画线隔开,例如:`MAX_VALUE`。 - **if、else、for、while等语句**:这些语句中的代码块必须使用大括号,即使只有一个语句也要使用大括号。 #### 三、类的定义 - 类的定义由访问级别、类型、类名、是否抽象、是否静态、泛型标识、继承或实现关键字以及父类或接口名称等组成。 - 类的访问级别有public和无访问控制符两种,类型为class、interface、enum。 - Java类主要由成员变量和方法组成,在定义类时建议先定义变量再定义方法。 - 定义类的过程也是抽象和封装的过程。 #### 四、内部类 - 内部类是在另一个类内部定义的类。与外部类相比,内部类提供了更好的封装性和访问性。 - 内部类的类型包括: - **静态内部类**:使用static修饰,可以直接访问外部类的静态成员,但不能直接访问非静态成员。 - **成员内部类**:通常定义为私有(private),可以访问外部类的所有成员。 - **局部内部类**:定义在方法或表达式内部。 - **匿名内部类**:没有名字的内部类,通常用于立即实例化一个类。 - **方法内部类**:在外部类的方法中定义的内部类。 内部类的主要优点包括: - 提供更好的封装,内部类可以被隐藏在外部类中。 - 内部类可以直接访问外部类的所有成员,包括私有的成员。 - 虽然使用外部类可以实现相同的功能,但使用内部类有时更加方便。 ### 总结 本文总结了Java基础课程中的关键知识点,包括面向对象编程的基本概念、命名约定、类的定义以及内部类的相关内容。理解这些概念对于学习Java编程语言至关重要,它们构成了后续深入学习的基础。
- 粉丝: 235
- 资源: 59
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- js-leetcode题解之146-lru-cache.js
- js-leetcode题解之145-binary-tree-postorder-traversal.js
- js-leetcode题解之144-binary-tree-preorder-traversal.js
- js-leetcode题解之143-reorder-list.js
- js-leetcode题解之142-linked-list-cycle-ii.js
- js-leetcode题解之141-linked-list-cycle.js
- js-leetcode题解之140-word-break-ii.js
- js-leetcode题解之139-word-break.js
- js-leetcode题解之138-copy-list-with-random-pointer.js
- js-leetcode题解之136-single-number.js