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

https://blog.csdn.net/Doreamonx/article/details/125673494

https://www.runoob.com/design-pattern/factory-pattern.html

相关推荐
Small black human11 分钟前
Spring-创建第一个SpringBoot项目
java·spring boot·intellij-idea
失败又激情的man17 分钟前
python爬虫关于多进程,多线程,协程的使用
开发语言·爬虫·python
CodeWithMe21 分钟前
【C/C++】内核开发之进程调度大纲
开发语言
User_芊芊君子32 分钟前
【Java】抽象类与接口全解析
java·开发语言
肉肉不想干后端38 分钟前
DDD架构中的Assembler转换:从混乱到清晰的架构演进
java
GalaxyPokemon39 分钟前
RPC - Response模块
java·前端·javascript
橘子编程44 分钟前
Python-循环结构解析
开发语言·python
武昌库里写JAVA1 小时前
大模型更重要关注工艺
java·开发语言·spring boot·学习·课程设计
加密社1 小时前
Solana 开发实战:Rust 客户端调用链上程序全流程
开发语言·后端·rust