Java SE
未读!!! note 目录
#Java访问控制权限
一、对Java中访问控制权限修饰符的对比表格
访问权限
同一类
同一包
子类
不同包的非子类
public
✓
✓
✓
✓
protected
✓
✓
✓
✗
default
✓
✓
✗
✗
private
✓
✗
✗
✗
二、Java访问控制符在Java中,访问控制权限是通过关键字 public, protected, default (也称为 package-private),以及 private 来实现的。这些关键字用于控制类、变量、方法和构造函数的访问级别。
public: 公共访问级别,被声明为 public 的类、方法、变量可以被任何其他类访问。
123456public class MyClass { public int myVariable; public void myMethod() { // Some code }}
protected: 受保护的访问级别,被声明为 protected 的成员可以被同一包内 ...
!!! note 目录
接口在 Java 中,接口是一种引用数据类型。它定义了一组抽象方法。其他类可以实现这些接口,并提供方法的具体实现。使用接口可以实现多重继承,因为一个类可以实现多个接口。
一、接口定义
接口使用 interface 关键字定义。接口中的方法默认是公共的抽象方法,可以包含常量、默认方法(Java 8 引入的特性)、静态方法(Java 8 引入的特性)等。
接口没有构造方法,也无法实例化。
类和接口的关系我们叫做实现(这里的实现也可以等同看做继承)。使用implements关键字进行接口的实现。
一个非抽象的类实现接口必须将接口中所有的抽象方法全部实现(强制要求的,要不然编译器报错。)
所有接口隐式的继承Object,所以也可调用Object中的方法。
1.1、接口结合多态
*接口是一种引用数据类型
123456789101112131415161718192021222324252627282930313233343536373839404142434445// 定义一个形状接口interface Shape { double ca ...
!!! note 目录
抽象类&抽象方法一、抽象方法父类中无法确定实现的方法,每个子类业务需求不一样,建议定义为抽象方法。
1.1、抽象方法定义
在Java中,抽象方法是指没有具体实现代码的方法,而只有方法声明。
public和abstract关键字的顺序没有要求。
当一个类有抽象方法,Java要求该类必须是抽象的。
12345// 定义一个抽象类abstract class Shape { // 声明一个抽象方法 abstract double area();}
二、抽象类当一个类具有一些通用的特性或行为,但又不能完全实现它们,或者希望强制子类来实现一些方法时,就可以考虑将这个类定义为抽象类,在抽象类中只提供公共代码。
2.1 抽象类定义
abstract class 类名{}
抽象类有构造方法,但无法实例化(即无法创建对象,但是其目的是给子类用的,子类可以通过super调用)。
抽象类中不一定有抽象方法,但是有抽象方法必须是抽象类。
一个非抽象类继承抽象类,必须将所有抽象方法 ...
!!! note 目录
final关键字
不可继承类: 使用 “final” 关键字修饰的类表示该类不能被继承。
不可覆盖方法: 在父类中使用 “final” 关键字修饰的方法表示该方法不能被子类覆盖(即不能被重写)。
不可变变量: 使用 “final” 关键字声明的变量是不可变的,一旦赋值后就不能再修改其值。这在创建常量时很有用。
final修饰的实例变量,必须在构造方法执行完之前手动上赋值,不能采用系统默认值。
常量定义规范: public static final 数据类型 常量名 = 常量值;
不可变对象:在Java中,final修饰的引用变量意味着该变量不能再指向其他对象,但并不意味着其所指向的对象是不可变的。即使引用变量是final的,对象本身的状态仍然可以改变。
1234567891011121314151617181920212223242526272829303132333435363738394041424344// 不可继承类final class FinalClass { // 该类的内容}// 试图继承不可 ...
!!! note 目录
super关键字
在Java中,this代表的是当前对象,super代表的是当前对象中的父亲特征。
super不能使用在静态上下文中。
在构造方法中调用父类构造方法或者父类和子类中存在同名实例变量、实例方法时super关键字不可省略。
一、super内存图
123456789101112131415161718192021222324package com.camellia.oop24;//父类public class Person { String name; int age; String email; String address; public Person() { super(); } Getter(); Setter(); //省略 // 实例方法 public void doSome(){ System.out.println("人类正在做一些事情!&q ...
!!! note 目录
多态一、类型转换1.1、基本数据类型转换在Java中,基本数据类型之间可以进行自动类型转换和强制类型转换。
自动类型转换(隐式类型转换):当一个表达式中包含不同类型的数据时,系统会自动将其中的低精度数据类型转换为高精度数据类型,以保证精度不丢失。
自动类型转换的规则如下:
byte、short、char类型会自动提升为int类型。
如果表达式中包含了不同类型的数据,系统会自动将低精度的类型转换为高精度的类型。
示例:
12int x = 10;double y = x; // 自动将int类型转换为double类型
强制类型转换(显式类型转换):在某些情况下,需要将一个数据类型转换为另一个数据类型,这时就需要使用强制类型转换。强制类型转换可以通过将目标类型的数据类型放在被转换的数据类型前面的括号中实现。
强制类型转换的规则如下:
数据类型范围大的可以强制转换为数据类型范围小的,但可能会导致精度丢失或溢出。
强制类型转换可能会造成数据丢失或溢出,因此需要谨慎使用。
示例:
12double a = 10.5;int b = (int) a; / ...
!!! note 目录
继承一、继承的基本语法1、继承概念: 在Java中,继承是面向对象编程中的一个重要概念,它允许一个类(称为子类或派生类)继承另一个类(称为父类或基类)的属性和方法。Java中的继承通过关键字extends来实现。
Java只支持单继承,一个类只能直接继承一个类。
Java不支持多继承,但是支持多重继承。
子类继承父类,除了私有的不支持继承、构造方法不支持继承,其他的全部都能继承。
一个类没有显示的继承任何类,默认继承java.lang.Object类。
Object是老祖宗,是JDK类库中的根类。
2、继承在Java中的实现:
123class Subclass extends Superclass { // 子类的成员变量和方法}
3、继承的相关术语
父类也可以叫做超类、基类、superclass。
子类也可叫做派生类、subclass。
二、方法覆盖/Override/方法重写/Overwrite
什么时候使用方法重写?当从父类继承来的方 ...
Java SE
未读!!! note 目录
单例模式==实现单例模式的步骤==
私有化构造方法确保外部不能直接通过构造方法来实例化对象,从而限制对象的创建。
提供静态方法获取实例通过一个静态方法来获取单例对象的实例,通常命名为 getInstance()。
提供一个静态变量(对于饿汉和懒汉不同)
一、饿汉式单例模式
私有化构造方法确保外部不能直接通过构造方法来实例化对象,从而限制对象的创建。
提供静态方法获取实例通过一个静态方法来获取单例对象的实例,通常命名为 getInstance()。
定义一个静态变量在类加载的时候,初始化静态变量。(只初始化一次)
1234567891011121314151617package com.camellia.singleton1;/** * 饿汉单例模式 */public class Singleton { //饿汉式单例模式:类加载时对象就创建好了。不管这个对象用还是不用。提前先把对象创建好。 private static Singleton instance = new Single ...
!!! note 目录
类一、类的定义在计算机编程中,类(Class)是一种抽象数据类型(ADT),它是面向对象编程(OOP)的基本概念之一。类是对现实世界中对象的抽象,它定义了对象的属性(成员变量)和行为(成员方法)。
类的定义通常包括以下几个要素:
类名(Class Name):类的名称用于标识该类,在代码中可以通过类名来引用该类。类名通常使用大驼峰命名法(Pascal Case)。
成员变量(Member Variables):也称为属性或字段(Fields),用于描述类的状态或特征。成员变量可以是各种数据类型(如整数、浮点数、字符串等),它们代表了对象的各种属性。在类的定义中,成员变量通常以变量名和数据类型的形式列出。
成员方法(Member Methods):也称为函数或操作(Methods),用于描述类的行为或功能。成员方法定义了对象可以执行的操作,它们可以操作对象的状态,并且可以被外部代码调用以执行特定的任务。在类的定义中,成员方法通常以方法名、参数列表和返回类型的形式列出。
构造方法(Constructor):是一种特殊类型的成员方法,用于在创建对象时初 ...
Java SE
未读!!! note 目录
Method (方法)一、静态方法什么时候需要用类名调用?调用者和被调用者在同一个类中时,可以省略。
1234567891011121314151617181920// 调用方法是,类名. 什么情况下可以省略。public class MethodTest01 { public static void main(String[] args) { //调用method1 method1(); MethodTest01.method1(); //调用method2 /*method2(); 编译器报错*/ MethodTest.method2(); } public static void method1(){ System.out.println("mothod1执行了!"); }}class MethodTest{ public ...