首页 > 编程知识 正文

java的四个基本特性,java知识点总结归纳

时间:2023-05-04 02:23:24 阅读:162365 作者:4956

Java面向对象概述及三个特征

Java是面向对象的高级编程语言,类和对象是Java程序结构的核心。 围绕Java类和Java对象,有三个基本特性。 封装是Java类的描述规范,继承是类与类之间联系的一种形式,多态性为断开系统组件或模块之间的耦合提供了解决方案。

本文主要围绕这三个特性,介绍了Java面向对象、组件解耦的核心思想。

1、面向对象思想

面向对象编程是当前主流的编程思想,它取代了过程化的程序开发技术。 因为Java是一种完整的面向对象编程语言,所以必须熟悉面向对象才能编写Java程序。

面向对象程序的核心由对象组成,每个对象都包含向用户公开的特定功能和隐藏的实现部分。 程序中的许多对象来自JDK标准库,更多的类需要程序员进行定制。

理论上,只要对象能够实现业务功能,就不需要特别在意其具体实现的细节。

面向对象具有以下特征:

)面向对象是一种常见的思想,符合人们的思维习惯

)面向对象可以简化复杂的业务逻辑,提高代码的复用性;

)3)面向对象具有抽象、封装、继承、多态性等特性。

面向对象的编程语言主要有c、Java、C#等。

2、类与客体的关系

类:

对一类事物的普遍一致性特征、功能抽象、描述和封装,是构建对象的模板或蓝图,所有用Java编写的代码都位于一类内部。 类之间主要存在依赖、聚合、继承等关系。

对象:

使用new关键字或反射技术创建的类的实例。 同一个类中的所有对象都有相似的数据和行为,如人的年龄、性别等,但每个对象都有自己的状态,对象的状态随程序的执行而变化。 需要注意的是,状态的变化必须通过调用方法来改变。 这是封装的基本原则。

3、封装思想

核心思想是"隐藏细节"、"数据安全"。 对对象不需要外部访问的成员变量和方法进行私有化,只提供符合开发者意愿的公共方法来访问这些数据和逻辑,保证数据的安全性和程序的稳定性。

具体实现方法如下

使用private修饰符将成员变量设置为专用,以防止外接程序直接自由调用或修改成员变量。 然后,向外部提供公共的set和get方法可以按照开发者的意思(写业务逻辑代码)。 很少)设置并获取成员变量的值。

也可以在private中使用只能在类内部使用的方法。 这就是封装的思想,是面向对象的最基本的开发规范之一。

现在,需要说明Java的权限限定关键字。 Java主要有四种权限:私有、受保护、公共和默认权限。

公共修饰符。 具有最大权限,可以访问CLASSPATH下的类、接口、异常等。

protected修饰符的主要作用是保护子类,子类可以访问这些成员变量和方法,但不能访问其他类。

default修饰符主要可以由此包的类访问。

权限限定符仅在类内部具有访问权限,在实际开发中,许多成员变量和方法都使用权限限定。

Java的访问控制停留在编译层,只在编译时进行访问权限检查,不会在类文件中留下痕迹。

还可以通过反射机制访问类的专用成员。

举个小例子:

view代码

在实际开发中,这种封装方法已经成为Java Bean代码编写的规范。 目前主流的框架在使用反射技术为对象赋值或取值时,使用了set和get方法,而不是直接对字段值进行操作。

4、继承和类实例过程

)1)从多个不同类中提取共性的数据和逻辑,将这些共性的内容封装到作为新类的父类(也称为超类或基类)中,使前一类继承该类。 那些共性的内容没有必要在子类中重复定义。 例如BaseDAO、BaseAction等。

*2) Java的继承机制是单一继承。 也就是说,一个类只能有一个直接的父类。

*3)如果子类和父类具有同名的成员变量和方法,则子类可以使用super关键字调用父类的成员变量和方法。 上述使用方法假设成员显示在子类中。

*4)调用子类的构造函数方法时,会隐式调用父类的构造函数方法super ()。 如果父类没有无参数构造方法,则必须在子类的构造方法中显式调用父类的带参数构造方法,以避免编译器错误。

)5)创建子类时调用父类构造方法)子类需要使用父类的成员变量和方法,因此调用父类构造方法进行初始化,然后调用子类的成员变量和

方法的初始化。因此,构造方法是无法覆盖的。

  * (6)当子类需要扩展父类的某个方法时,可以覆盖父类方法,但是子类方法访问权限必须大于或等于父类权限。

  (7)继承提高了程序的复用性、扩展性,也是 Java 语言多态特征的前提。

  (8)在实际开发、程序设计过程中,并非先有的父类,而是先有了子类中通用的数据和逻辑,然后再抽取封装出来的父类。

 

  我们简单了解下类的实例化过程

  (1)JVM 读取指定 classpath 路径下的 class 文件,加载到内存,如果有直接父类,也会加载父类;

  (2)堆内存分配空间;

  (3)执行父类、子类静态代码块;

  (4)对象属性进行默认初始化;

  (5)调用构造方法;

  (6)在构造方法中,先调用父类构造方法初始化父类数据;

  (7)初始化父类数据后,显示初始化,执行子类的构造代码块;

  (8)再进行子类构造方法的特定初始化;

  (9)初始化完毕后,将地址赋值给引用

 

  为了说明上面的内容,我们来编写一个简单的例子,实际意义并不大,只是为了演示类继承实例化的过程。

 

View Code

 

5、多态、反射和组件解耦

  多态指允许不同类的对象对同一“消息”做出响应。即同一消息可以根据发送对象的不同而采用多种不同的行为方式。可以用于消除类型之间的耦合关系,Spring 的核心就是多态和面向接口编程。

  (1)Java 中可以使用父类、接口变量引用子类、实现类对象;

  (2)在这个过程中,会对子类、实现类对象做自动类型提升,其特有功能就无法访问了,如果需要使用,可以做强制类型转换。

 

  Java 的反射技术和多态特性是框架开发、组件解耦的核心,在这方面,Spring 的 IOC 和 DI 为我们提供了一个极好的学习范例,Spring 的 IOC 使用反射技术创建、管理对象,DI 使用多态技术为组件注入依赖对象。

 

  在没有学习 Spring 之前,简单的解决方案是使用一个 .properties 文件保存程序中使用的接口、实现类类型键值信息,然后在程序中使用一个全局 Properties 对象保存这些信息,并且使用反射技术把这些实现类初始化、提供一个静态的方法获取指定接口的实现类对象,在组件中就可以使用依赖对象的键获取需要的对象。

  这样的方案带来的好处就是:当我们需要修改某个组件的实现方式时,比如把之前 JDBC 的 DAO 实现改为 Hibernate 实现,只要把这些新的实现类放到 classpath 下,把 .properties 文件对应接口的实现类类型改成新的 Hibernate 实现类,而不需要修改依赖组件的代码。

  在之后的文章中,我们将写一个简单的例子进一步讲解这个初级解耦方案

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。