目录
- 什么是类?怎么访问?
- 类和对象的概念
- this和super的区别
- 构造方法
- 重载和重写的区别
- JAVA的三大特性
- static关键字
- 抽象类和接口的区别和联系
- [JVM JDK JVM](#JVM JDK JVM)
- JDK版本
-
- [Java EE](#Java EE)
- [Java SE](#Java SE)
- [Java ME](#Java ME)
- [JAVA 工厂模式](#JAVA 工厂模式)
- 参考文章
什么是类?怎么访问?
类是用来描述一个对象的,类中包含属性和方法。普通的成员变量/方法可以通过对象的引用来访问,静态的成员变量/方法,需要通过类名来访问
类和对象的概念
类就是对具有相同特征的一类事物的描述,而对象是类的具体实例.
this和super的区别
(1)this是当前对象的引用,super代表父类对象。
(2)当当前的形参与成员名字重名,可以用this来区分
(3)调用super()必须写在子类构造方法的第一行,否则编译不通过,每个子类构造方法的第一条语句,都在隐含地调用super(),
(4)this和super不能同时出现在一个构造函数中,this和super都指的是对象,不能在static环境中使用
(5)从本质上讲,this是一个指向对象的指针,super是一个java关键字。
构造方法
• 构造方法的作用是初始化对象,并且分为无参构造方法和有参构造方法
• 构造方法的方法名与类名相同,没有返回值,且不需要void修饰。
• 如果一个类没有定义构造方法,Java会提供一个默认的无参构造方法
• 在一个类中可以有多个构造方法 ( 构造方法可以重载 ).
重载和重写的区别
重载:当一个类中有多个名字相同的方法时,可以通过参数的个数、类型、顺序,在调用时进行区分。方法的重载返回值类型无关
重写:指的是对子类中的某个父类的方法进行重写。
JAVA的三大特性
一、封装
隐藏类内部的实现细节,主要体现在在类的内部可以使用private关键字等进行修饰成员变量和方法。
关键字的范围顺序:
private:只有同一个类下的元素才可以访问它。
default:只有同一个包下的元素才可以访问它。
protected:只有同一个包下的元素或者子类中的元素才可以访问它。
public:所有位置(不管是否在同一个类中或同一个包下)的元素都可以访问它。
private<protected<default<public
二、继承
(1)类与类之间只能是单继承关系
(2)一个类可以继承多个接口
(3)抽象类之间也可以存在继承关系
三、多态
多态体现为父类的引用变量可以指向子类对象(因此,多态的前提是存在继承关系),主要理解为一个同一个行为具有多个不同表现形式或形态的能力。定义格式:父类类型 变量名=new 子类类型();
static关键字
(1)static表示"全局"或者"静态"的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块。
(2)对于类成员变量,系统会在加载类时会为每一个类成员变量分配一个储存单元,所有该类成员变量都共享这一储存单元。
(3)静态方法中不能访问非静态成员方法和非静态成员变量,但是在非静态成员方法中是可以访问静态成员方法/变量的。当然静态可以访问静态,非静态可以访问非静态。
(4)static代码块在jvm加载类的时候会自动执行,但是static代码块不能在方法内 ,如果static代码块有多个,JVM将按照它们在类中出现的先后顺序依次执行它们,每个代码块只会被执行一次。
(5)静态变量随着对象的创建而存在,随着对象的回收而销毁; 静态变量在类加载的时候创建,随着类的消失而消失;
(6)静态成员可以被us哦呦1对象共享
抽象类和接口的区别和联系
(1)接口不能被实例化、没有构造方法、方法默认使用public abstract修饰,变量默认使用public static final修饰,且必须赋予初值,不能被更改。
(2)接口是行为的抽象,是一种行为的规范,是like a的关系;抽象类是对类的抽象,是is a的关系;
(3)接口没有构造方法,二抽象类有构造方法,接口中只能有定义,不能有方法的实现,而抽象类中可以有定义和实现。
(4)抽象类中只能有单继承关系,而接口可以实现多继承。
JVM JDK JVM
JDK
Java Development Kit,Java 软件开发工具包。
JRE
Java Runtime Environment,Java 运行环境。
JVM
Java Virtual Machine,Java 虚拟机。JVM屏蔽了与具体操作系统平台相关的信息,使Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。JVM在执行字节码时,实际上最终还是把字节码解释成具体平台上的机器指令执行。
总结:
JDK = JRE + Java开发工具
JRE = JVM + Java类库
JDK版本
Java EE
Java Enterprise Edition,Java 企业版,多用于企业级开发,包括web开发等等。 Java EE是在JavaSE的基础上构建的他提供Web 服务、组建模型、管理和通信API.可以用来实现企业级的面向服务体系结构(service-oriented architecture,SOA)和web2.0应用程序。
Java SE
Java Standard Edition,Java 标准版,一般Java程序的开发就可以(如桌面程序),可以看作是JavaEE的子集。它允许开发和部署在桌面、服务器、嵌入式环境和实施环境中使用的Java应用程序。JavaSE 包括支持Java Web服务开发的类,并为Java Platform,Enterprise Edition(Java EE)提供基础。
Java ME
Java Micro Edition,Java 微型版
主要用于移动设备、嵌入式设备上的java应用程序,从JDK 5.0开始,改名为Java ME。编译虚拟机的指令集与编译微处理器的指令集非常类似。
JAVA 工厂模式
-
工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一,它提供了一种创建对象的方式,使得创建对象的过程与使用对象的过程分离。
-
工厂模式提供了一种创建对象的方式,而无需指定要创建的具体类。
-
通过使用工厂模式,可以将对象的创建逻辑封装在一个工厂类中,而不是在客户端代码中直接实例化对象,这样可以提高代码的可维护性和可扩展性。
java
public interface Shape {
void draw();
}
public class Rectangle implements Shape {
@Override
public void draw() {
System.out.println("Inside Rectangle::draw() method.");
}
}
public class Square implements Shape {
@Override
public void draw() {
System.out.println("Inside Square::draw() method.");
}
}
//创建工厂
public class ShapeFactory {
//使用 getShape 方法获取形状类型的对象
public Shape getShape(String shapeType){
if(shapeType == null){
return null;
}
if(shapeType.equalsIgnoreCase("CIRCLE")){
return new Circle();
} else if(shapeType.equalsIgnoreCase("SQUARE")){
return new Square();
}
return null;
}
}
//使用工厂
public class FactoryPatternDemo {
public static void main(String[] args) {
ShapeFactory shapeFactory = new ShapeFactory();
//获取 Circle 的对象,并调用它的 draw 方法
Shape shape1 = shapeFactory.getShape("CIRCLE");
//调用 Circle 的 draw 方法
shape1.draw();
//获取 Square 的对象,并调用它的 draw 方法
Shape shape2 = shapeFactory.getShape("SQUARE");
//调用 Square 的 draw 方法
shape2.draw();
}
}
参考文章
https://blog.csdn.net/qq_41679818/article/details/90523285
https://blog.csdn.net/2301_79263365/article/details/139214245?spm=1001.2101.3001.10796
https://blog.csdn.net/Martin_chen2/article/details/112905578