Java安全|03.Java基础语法(2)

00x1 单例模式

  1. 定义:

    • 单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。

    • 这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。

  2. 应用场景

    • 类的构造过程复杂,需要经过多个步骤,如果让外部直接构造,可能会缺失部分步骤
    • 需要频繁的创建或销毁的对象
    • 创建对象耗时过多或消耗的资源过多,但又经常用到对象
  3. 简单示例

    public class Main {
    public static void main(String[] args) {
    SingleObject dome1 = SingleObject.getInstance();
    //通过getInstance()方法获取SingleObject类的实例对象
    SingleObject dome2 = SingleObject.getInstance();
    //主函数当中使用此类的getInstance()函数,即可得到系统当前已经实例化的该类对象,若当前系统还没有实例化过这个类的对象,则调用此类的构造函数
    System.out.println("dome1 = " + dome1);
    System.out.println("dome2 = " + dome2);
    System.out.println(dome1.equals(dome2));
    //equals()方法比较两个对象是否相同
    }
    }
    class SingleObject{
    private static SingleObject singleObject = null;
    private SingleObject(){
    }
    public static SingleObject getInstance(){
    if (singleObject == null) {
    singleObject = new SingleObject();
    //判断对象singleObject对象是否为null。若是则创建;若否则返回已有的对象。
    }
    return singleObject;
    }
    } >>>
    dome1 = SingleObject@682a0b20
    dome2 = SingleObject@682a0b20
    true

00x2 final关键字

  1. java中提供了一种语法,可以在数据初始化后不被修改,使用关键字final。
  2. final可以修改的对象
    • 修饰变量。修饰类中的变量需要对变量进行初始化,一般将final修饰的变量称为常量。
    • 修饰方法。被final修饰的方法不能被重写。且final不允许修饰构造方法。
    • 修饰类。被final修饰的类不能被继承。
    • 修饰方法参数。一旦修饰,参数无法修改。

00x3 抽象

  1. 定义

    • 在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。
  2. 抽象方法:只有声明,没有实现的方法称为抽象方法。

    • 语法:abstract 返回值类型 方法名(参数);
  3. 抽象类:不完整的类就是抽象类。包含抽象方法的类一定是抽象类,但是反之抽象类的方法不一定是抽象方法。

    • 语法 abstract class 类名

    • 抽象类无法实例化

    • 抽象类无法直接构造对象,但是可以通过子类间接构造对象.

    • 一个类只能继承一个抽象类。

    • 如果抽象类中含有抽象方法,子类继承时必须重写抽象方法。

      //demo1
      public class Abstract {
      public static void main(String[] args) {
      Fruits apple = new Fruits() {
      @Override
      void color() {
      System.out.println("apple is red");
      }
      };//对方法进行重写
      apple.color();
      }
      }
      abstract class Fruits{
      String fruitName;
      abstract void color();
      }
      >>>
      apple is red //demo2
      public class Abstract {
      public static void main(String[] args) {
      Apple apple = new Apple();
      apple.color();
      }
      } abstract class Fruits{
      String fruitName;
      abstract void color();
      } class Apple extends Fruits{
      @Override
      void color() {
      System.out.println("apple is red");
      }
      }
      >>>
      apple is red

Java基础|03.基础语法(2)的更多相关文章

  1. Java入门 - 语言基础 - 03.基础语法

    原文地址:http://www.work100.net/training/java-basic-syntax.html 更多教程:光束云 - 免费课程 基础语法 序号 文内章节 视频 1 第一个Jav ...

  2. java基础-03基本语法

    关键词 常用关键字53个(含2个保留字): 1.保留关键字(2个) const --常量 常数:用于修改字段或局部变量的声明. goto--转到 指定跳转到标签,找到标签后,程序将处理从下一行开始的命 ...

  3. 023 01 Android 零基础入门 01 Java基础语法 03 Java运算符 03 算术运算符之——自增自减运算符

    023 01 Android 零基础入门 01 Java基础语法 03 Java运算符 03 算术运算符之--自增自减运算符 本文知识点:Java算术运算符中的自增自减运算符 自增自减运算符 之前我们 ...

  4. 003 01 Android 零基础入门 01 Java基础语法 01 Java初识 03 Java程序的执行流程

    003 01 Android 零基础入门 01 Java基础语法 01 Java初识 03 Java程序的执行流程 Java程序长啥样? 首先编写一个Java程序 记事本编写程序 打开记事本 1.wi ...

  5. 086 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 03 面向对象基础总结 01 面向对象基础(类和对象)总结

    086 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 03 面向对象基础总结 01 面向对象基础(类和对象)总结 本文知识点:面向对象基础(类和对象)总结 说明 ...

  6. Java多线程系列--“基础篇”03之 Thread中start()和run()的区别

    概要 Thread类包含start()和run()方法,它们的区别是什么?本章将对此作出解答.本章内容包括:start() 和 run()的区别说明start() 和 run()的区别示例start( ...

  7. Java基础之基础语法

    前言:Java内功心法之基础语法,看完这篇你向Java大神的路上又迈出了一步(有什么问题或者需要资料可以联系我的扣扣:734999078) 一个Java程序可以认为是一系列对象的集合,而这些对象通过调 ...

  8. # 095 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 03 封装总结 01 封装知识点总结

    095 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 ...

  9. 098 01 Android 零基础入门 02 Java面向对象 03 综合案例(学生信息管理) 02 案例分析及实现 02 编写并测试Subject类

    098 01 Android 零基础入门 02 Java面向对象 03 综合案例(学生信息管理) 02 案例分析及实现 02 编写并测试Subject类 本文知识点:编写并测试Subject类 说明: ...

  10. 099 01 Android 零基础入门 02 Java面向对象 03 综合案例(学生信息管理) 02 案例分析及实现 03 编写并测试Student类

    099 01 Android 零基础入门 02 Java面向对象 03 综合案例(学生信息管理) 02 案例分析及实现 03 编写并测试Student类 本文知识点:编写并测试Subject类 说明: ...

随机推荐

  1. [vsCode]Visual Studio Code环境变量不同步

    很奇怪的事情,在设置好Path环境变量后,powershell正常了, 但是vscode不正常 解决方法竟然是: 确认{在PowerShell运行正常}后,关闭{vsCode},进入{管理员模式的Po ...

  2. ncnn 加载 bin文件时,出错 报异常 0xC0000094:Integer division by zero。

    这次转yolov8.pt 到 onnx 到 ncnn,调用ncnn,加载bin文件时出错报异常 0xC0000094:Integer division by zero. 解决方式: 导出onnx时,加 ...

  3. Python - Numpy 学习笔记

    #python - Numpy learning import numpy as np #---Numpy学习笔记---(第四章)--- #切片,浅拷贝 a = np.arange(10) print ...

  4. 解决vscode中,powershell中conda activate无效--更改vscode默认的shell为anaconda shell

    问题记录: windows系统里,cmd可以正常使用conda activate 命令,但是在powershell中,使用conda activate既不报错(说明路径没问题),也没激活conda环境 ...

  5. Ubuntu下CodeBlocks控制台程序中文显示乱码解决问题

    今天在CodeBlocks下折腾来半天,终于把中文乱码给解决了,其实很简单. 在环境设置里进行如下设置:把Terminal to launch console programs那个选项改成gnome- ...

  6. 我和Java这些年的故事(六)

    从2006年开始,我就在建设自己的网站,从2008年到2011年,我托管了四年自己的服务器,那时阿里云还没有兴起,只能自己买服务器,放到托管商机房里去,他们给你一个IP.机器全部是自己运维. IBM内 ...

  7. 正确引用R及R包

    R版本不断更新,为保证数据可重复性,引用R时需标注出对应的R版本.那么如何引用呢? 打开R,键入citation(),得到对应的版本引用信息. To cite R in publications us ...

  8. RabbitMQ学习第七章:消息确认机制之事务机制

    RabbitMQ消息确认机制之事务机制. RabbitMQ中,我们可以通过持久化数据 解决RabbitMQ服务器异常 的数据丢失问题. 问题:生产者将消息发送出去,消息到底有没有到达RabbitMQ服 ...

  9. 给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数,使得它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在唯一答案

    var threeSumClosest = function(nums, target) { let ans = nums[0] + nums[1] + nums[2]; const len = nu ...

  10. python学习●错误点●expected an indented block

    报错:expected an indented block 翻译:缩进错误 因为python判断句无{},所以要缩进空格代表优先级.