当前位置: 首页 > article >正文

JAVASE知识梳理(一)

目录

1.JAVA的特点

1.1平台无关性

1.2面向对象和面向过程

2.面向对象语言的特点

2.1封装

2.1.1包

2.1.2访问权限修饰符

2.2继承

2.3多态

3.类和对象

3.1类的结构

3.2对象

4.方法重载和方法重写

5.无参构造方法和super()

6.数据转换和向上向下转型

7.接口和抽象类

8.继承和实现

9.大致思维图

1.JAVA的特点

java语言特点有开源、简单高效,最重要的是平台无关性和面向对象。

1.1平台无关性

程序员编写的源代码文件会被编译成标准字节码文件,再由JVM去解释执行翻译成机器码。JVM是平台相关的,不同的操作系统对应不同的JVM,通过JVM屏蔽了底层的差异,实现了java语言的“一次编译,到处运行”。

1.2面向对象和面向过程

面向过程的核心是过程,将一个问题逐步分解成一个个子问题,再去通过函数逐一去解决这些子问题,最后按照一定的顺序去调用这些函数就解决了整个问题。

面向对象的核心是类,将一个问题中参与的对象提取出来进行分类,在各自定义的类里面完成相应的功能和细节,提高了代码的扩展性和复用性。

需要注意的是,面向对象在实现具体细节的时候也会用到面向过程的思想,两者不是完全无关的。

2.面向对象语言的特点

注意和java语言的特点进行区分。java语言的特点是面向对象,而面向对象语言的特点是封装、继承、多态。

2.1封装

封装实际就是通过访问权限修饰符隐藏类内部的实现细节,再通过方法去控制外部对这些信息的访问和操作。最经典的一个例子就是私有属性搭配公有化方法。

可以提高数据的安全性,对于一些敏感的数据起到保护作用,有利于代码的维护。

封装需要储备的知识点有:包、访问权限修饰符。

2.1.1包

包相当于一个文件夹,是一种用于组织和管理类和接口的命名空间机制。与包相关的关键字有package和import。

import用于导入外包类,package用于声明当前类所属的包名。

包名.类名就可以区分不同包下的相同类名

2.1.2访问权限修饰符

权限由大到小分别是public,protected,默认(即不添加),private。其中类的访问权限修饰符只能是public和默认。其余两个只能修饰类中的属性和方法。

public可被任意包任意类访问;protected可被同包类或者不同包下的该类的子类访问;默认只能被同包类访问;private只能被本类访问。

为什么不能用protected和private去修饰类呢?

首先private不能修饰类很好理解,假如一个类是私有的,这个类无法被任何代码访问,那就毫无意义。protected和默认权限相比,就是可以通过不同包下的子类去访问。而其他类要继承该类就得先能访问到,如果一个类用protected去修饰,那么不同包的类无法访问它,也就无法继承它,所以用默认权限足矣。

2.2继承

继承是指在已有的类中派生出新的类,新的类不仅拥有原先的属性和行为,还可以扩展新的功能。

继承相关的关键字有:extends,super。 extends用来建立父子类的关系,super可以访问父类成员。

单继承特性:即一个子类只能直接继承一个父类。

传递性:即一个类可以继承,也可以被继承。子类不仅拥有父类的属性和行为,还间接拥有父类所继承的类的属性和行为。

代码扩展性:子类仲可以自己扩展新功能并不影响其他类。

2.3多态

多态是指同一事务在不同时刻表现出不同的状态。多态的前提条件是类有继承和方法重写。然后通过父类引用子类对象实现。

多态相关的关键字:instanceof用来判断对象是否属于某个类。

3.类和对象

类是一种抽象的模版,是共有的属性和行为的集合。不能被直接使用,可以实例化出具体的对象。

3.1类的结构

类的结构有:成员变量,成员方法,构造方法,内部类,代码块。

其中成员变量就是事物的属性;成员方法就是事物的行为,即可以做什么;构造方法就是在初始化对象,对对象中的成员变量进行赋值,构造方法不需要返回值也不用加void;代码块即一段没有名称的代码;内部类就是在类中声明的类。

可能会用到关键字static,this,其中static可以实现直接通过类名去调用成员。static不能修饰构造方法,被static修饰的成员是静态的,在类加载的时候加载,并且所有对象共享一份,且静态成员无法访问非静态成员。代码块就只有静态代码块和实例代码块,两者区别就是静态代码块在类加载时执行,而实例代码块在每次创建对象时都会执行,且优先于构造方法执行。

类加载发生在第一次使用一个类的时候,比如首次创建这个类的对象,首次访问该类的静态成员。

关键字this可以解决成员变量和局部变量同名、方法之间互相依赖(即在一个方法中调用当前类中的另一个方法)的问题,this表示当前对象,即哪个对象在执行这段代码,this就是这个对象。

显然static不能与对象依赖有关的建立联系,如static不能修饰构造方法,或者在static修饰的成员里使用this。原因就是类加载在创建对象之前,与对象依赖有关的发生在创建对象之后,两者加载顺序矛盾。

3.2对象

对象引用:即声明一个类型的变量,再通过new+该类的构造方法,开辟一片内存空间创建一个对象,将对象的地址赋给变量,通过变量名去访问这片空间。

创建对象时会将类的非静态成员变量复制一份给对象,方法不会被复制,对象通过存储的类元数据指针去间接访问方法。

4.方法重载和方法重写

编译器通过方法名和方法参数来确定调用哪个方法。当方法同名时便根据参数的不同来区分方法,此为方法重载。其中参数的不同可以分为三种:数量不同,类型不同,顺序不同。

而方法重写是在继承里面体现的,当父类的方法无法满足子类的需求时可以进行方法重写。父类的构造方法不能重写。因为重写要求方法体结构体一样,这和构造方法的规范冲突。与方法重写有关的标签是@override,用来声明随后的方法是重写的,可以检测出不符合重写的规范的错误。关键字abstract,可以定义抽象类和抽象方法,在子类中对抽象方法进行重写,否则子类也为抽象类。

5.无参构造方法和super()

两者都是默认隐式存在的,但一个属于本类,一个属于子类中访问父类。当类中定义有参构造方法后,就要将无参构造方法显示定义出来,否则无法使用。 super()是在子类的构造方法里首先访问父类的无参构造方法,必须在子类构造方法里的第一行。

6.数据转换和向上向下转型

多态中的向上向下转型和基本数据类型的转换逻辑基本一致。 向上转型对应默认转换,向下转型对应强制转换。

7.接口和抽象类

接口和抽象类都是抽象的,且都不能实例化对象。但是接口是彻底的抽象,主要强调必须做什么,是一种行为规范。抽象类是类族的公共基类,仍具有普通类的其他功能,例如构造方法,定义具体的方法等都可以。

8.继承和实现

类和类、接口和接口之间可以继承。但是类和类之间只能单继承,而接口和接口之间可以多继承。

类和接口之间的关系为实现。一个类可以直接实现多个接口。

9.大致思维图


http://www.kler.cn/a/612967.html

相关文章:

  • Pyside6 开发 使用Qt Designer
  • G i t
  • 硬件测试工装设计不合理的补救措施
  • 剑指Offer26 -- 树
  • Python 装饰器(Decorators)
  • C++方向就业
  • acwing 每日一题4888. 领导者
  • EMC知识学习三
  • firewall-cmd添加访问规则
  • Next.js 中间件鉴权绕过漏洞 (CVE-2025-29927) 复现利用与原理分析
  • 标准库中有uint32_t类型吗?
  • Pytorch学习笔记(十六)Image and Video - Transfer Learning for Computer Vision Tutorial
  • Mysql-DML
  • Linux命令大全:从入门到高效运维
  • Mac: 运行python读取CSV出现 permissionError
  • 【LeetCode 题解】数据库:180. 连续出现的数字
  • 提示词应用:IT模拟面试
  • CSS学习笔记5——渐变属性+盒子模型阶段案例
  • 构建高可用性西门子Camstar服务守护者:异常监控与自愈实践
  • k近邻算法K-Nearest Neighbors(KNN)