关键字详解

news/2024/12/23 5:15:50/

1.用于定义访问权限修饰符的关键字

面向对象程序三大特性:封装、继承、多态。

1.1 访问权限符 

Java 中主要通过类和访问权限来实现封装: 类可以将数据以及封装数据的方法结合在一起 ,更符合人类对事物的认知,而访问权限用来控制方法或者字段能否直接在类外使用 Java 中提供了四种访问限定符:

比如:
public :可以理解为一个人的外貌特征,谁都可以看得到
default: 对于自己家族中 ( 同一个包中 ) 不是什么秘密,对于其他人来说就是隐私了
private :只有自己知道,其他人都不知道
说明
protected 主要是用在继承中
default权限指:什么都不写时的默认权限
访问权限除了可以限定类中成员的可见性,也可以控制类的可见性

1.1.1 protected 关键字

为了实现封装特性, Java 中引入了访问限定符,主要限定:类或者类中成员能否在类外或者其他包中被访问。  

1.2 用于定义类、函数、变量修饰符的关键字

1.2.1 static修饰成员变量

Java 中,被 static 修饰的成员,称之为静态成员,也可以称为类成员,其不属于某个具体的对
象,是所有对象所共享的
static 修饰的成员变量,称为静态成员变量 ,静态成员变量最大的特性: 不属于某个具体的对象,是 所有对象所共享的
【静态成员变量特性】
1. 不属于某个具体的对象,是类的属性,所有对象共享的,不存储在某个对象的空间中
2. 既可以通过对象访问,也可以通过类名访问,但一般更推荐使用类名访问
3. 类变量存储在方法区当中
4. 生命周期伴随类的一生 ( 即:随类的加载而创建,随类的卸载而销毁 )

1.2.2 final 关键字

final关键可以用来修饰变量、成员方法以及类。

1. 修饰变量或字段,表示常量 ( 即不能修改 )
2. 修饰类:表示此类不能被继承
3. 修饰方法:表示该方法不能被重写 ( 后序介绍 )

1.2.3 abstract关键字

在打印图形例子中, 我们发现, 父类 Shape 中的 draw 方法好像并没有什么实际工作, 主要的绘制图形都是由 Shape的各种子类的 draw 方法来完成的. 像这种没有实际工作的方法, 我们可以把它设计成一个 抽象方法(abstract method), 包含抽象方法的类我们称为 抽象类(abstract class)

1.在Java中,一个类如果被 abstract 修饰称为抽象类,抽象类中被 abstract 修饰的方法称为抽象方法,抽象方法不用给出具体的实现体。

注意:抽象类也是类,内部可以包含普通方法和属性,甚至构造方法

2.抽象类特性

  • 抽象类不能直接实例化对象
  • 抽象方法不能是 private 的
  • 抽象方法不能被final和static修饰,因为抽象方法要被子类重写
  • 抽象类必须被继承,并且继承后子类要重写父类中的抽象方法,否则子类也是抽象类,必须要使用 abstract 修饰
  •  抽象类中不一定包含抽象方法,但是有抽象方法的类一定是抽象类
  • 抽象类中可以有构造方法,供子类创建对象时,初始化父类的成员变量

1.3 用于定义类与类之间关系的关键字

1.3.1 extends

继承

1.3.2 implements

接口就是公共的行为规范标准,大家在实现时,只要符合规范标准,就可以通用。
在Java中,接口可以看成是:多个类的公共规范,是一种引用数据类型。

1.接口语法规则
public interface 接口名称{
// 抽象方法
public abstract void method1(); // public abstract 是固定搭配,可以不写
public void method2();
abstract void method3();
void method4();
// 注意:在接口中上述写法都是抽象方法,跟推荐方式4,代码更简洁
}

提示:
1. 创建接口时, 接口的命名一般以大写字母 I 开头.
2. 接口的命名一般使用 "形容词" 词性的单词.
3. 阿里编码规范中约定, 接口中的方法和属性不要加任何修饰符号, 保持代码的简洁性.

2.接口使用

接口不能直接使用,必须要有一个"实现类"来"实现"该接口,实现接口中的所有抽象方法。 

public class 类名称 implements 接口名称{
// ...
}

注意:子类和父类之间是extends 继承关系,类与接口之间是 implements 实现关系。

3.接口特性
  • 接口类型是一种引用类型,但是不能直接new接口的对象 
  •  接口中每一个方法都是public的抽象方法, 即接口中的方法会被隐式的指定为 public abstract(只能是public abstract,其他修饰符都会报错)
  • 接口中的方法是不能在接口中实现的,只能由实现接口的类来实现
  • 重写接口中方法时,不能使用默认的访问权限
  • 接口中可以含有变量,但是接口中的变量会被隐式的指定为 public static final 变量
  • 接口中不能有静态代码块和构造方法
  • 接口虽然不是类,但是接口编译完成后字节码文件的后缀格式也是.class
  • 如果类没有实现接口中的所有的抽象方法,则类必须设置为抽象类
  • jdk8中:接口中还可以包含default方法。

注意:

在Java中,类和类之间是单继承的,一个类只能有一个父类,即Java中不支持多继承,但是一个类可以实现多个接口。 

继承表达的含义是 is - a 语义, 而接口表达的含义是 具有 xxx 特性 


http://www.ppmy.cn/news/1461838.html

相关文章

【一步一步了解Java系列】:了解Java与C语言的运算符的“大同小异”

看到这句话的时候证明:此刻你我都在努力~ 加油陌生人~ 个人主页: Gu Gu Study ​​ 专栏:一步一步了解Java 喜欢的一句话: 常常会回顾努力的自己,所以要为自己的努…

BERT for Joint Intent Classification and Slot Filling 论文阅读

BERT for Joint Intent Classification and Slot Filling 论文阅读 Abstract1 Introduction2 Related work3 Proposed Approach3.1 BERT3.2 Joint Intent Classification and Slot Filling3.3 Conditional Random Field 4 Experiments and Analysis4.1 Data4.2 Training Detail…

软件工程期末复习(7)需求过程

需求分析 需求过程 什么是需求过程? 需求过程是用来导出、确认和维护系统需求文档的一组结构化活动。通常,一个良好的需求过程应包括下列活动: 需求提取需求分析和协商需求确认 需求提取 需求提取是通过与客户、系统用户和其他与系统开发相…

Linux的常用指令 和 基础知识穿插巩固(巩固知识必看)

目录 前言 ls ls 扩展知识 ls -l ls -a ls -al cd cd 目录名 cd .. cd ~ cd - pwd 扩展知识 路径 / cp [选项] “源文件名” “目标文件名” mv [选项] “源文件名” “目标文件名” rm 作用 用法 ./"可执行程序名" mkdir rmdir touch m…

QMetaObject 是 Qt 框架中的一个重要类,用于在运行时处理对象的元对象信息

QMetaObject 是 Qt 框架中的一个重要类,用于在运行时处理对象的元对象信息。每个继承自 QObject 的类在 Qt 中都有一个对应的 QMetaObject,用于存储该类的元对象信息,包括类名、父类、信号和槽等。 以下是 QMetaObject 类的一些主要功能和用…

ubuntu24.04安装ros

ubuntu24.04安装ros 踩坑 踩坑 目前安装人数比较少,没有较为详细的博客,参考官网的链接 http://docs.ros.org/en/rolling/Installation/Ubuntu-Install-Debians.html 同时在如下的一步中会找不到网址报错,此时可以参考https://blog.51cto.c…

一种基于电场连续性的高压MOSFET紧凑模型,用于精确表征电容特性

来源:A Compact Model of High-Voltage MOSFET Based on Electric Field Continuity for Accurate Characterization of Capacitance(TED 24年) 摘要 本文提出了一种新的高压MOSFET(HV MOS)紧凑模型,以消…

cv2方框绘制

在OpenCV(通常使用cv2作为Python中的别名)中,你可以使用cv2.rectangle()函数来绘制方框。然而,cv2.rectangle()函数本身并不直接支持修改线段的样式(如虚线、点线等)。但你可以通过一些技巧来实现这些效果。…