Java基础|03.基础语法(2)
Java安全|03.Java基础语法(2)
00x1 单例模式
定义:
单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。
这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。
应用场景
- 类的构造过程复杂,需要经过多个步骤,如果让外部直接构造,可能会缺失部分步骤
- 需要频繁的创建或销毁的对象
- 创建对象耗时过多或消耗的资源过多,但又经常用到对象
简单示例
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关键字
- java中提供了一种语法,可以在数据初始化后不被修改,使用关键字final。
- final可以修改的对象
- 修饰变量。修饰类中的变量需要对变量进行初始化,一般将final修饰的变量称为常量。
- 修饰方法。被final修饰的方法不能被重写。且final不允许修饰构造方法。
- 修饰类。被final修饰的类不能被继承。
- 修饰方法参数。一旦修饰,参数无法修改。
00x3 抽象
定义
- 在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。
抽象方法:只有声明,没有实现的方法称为抽象方法。
- 语法:abstract 返回值类型 方法名(参数);
抽象类:不完整的类就是抽象类。包含抽象方法的类一定是抽象类,但是反之抽象类的方法不一定是抽象方法。
语法 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)的更多相关文章
- Java入门 - 语言基础 - 03.基础语法
原文地址:http://www.work100.net/training/java-basic-syntax.html 更多教程:光束云 - 免费课程 基础语法 序号 文内章节 视频 1 第一个Jav ...
- java基础-03基本语法
关键词 常用关键字53个(含2个保留字): 1.保留关键字(2个) const --常量 常数:用于修改字段或局部变量的声明. goto--转到 指定跳转到标签,找到标签后,程序将处理从下一行开始的命 ...
- 023 01 Android 零基础入门 01 Java基础语法 03 Java运算符 03 算术运算符之——自增自减运算符
023 01 Android 零基础入门 01 Java基础语法 03 Java运算符 03 算术运算符之--自增自减运算符 本文知识点:Java算术运算符中的自增自减运算符 自增自减运算符 之前我们 ...
- 003 01 Android 零基础入门 01 Java基础语法 01 Java初识 03 Java程序的执行流程
003 01 Android 零基础入门 01 Java基础语法 01 Java初识 03 Java程序的执行流程 Java程序长啥样? 首先编写一个Java程序 记事本编写程序 打开记事本 1.wi ...
- 086 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 03 面向对象基础总结 01 面向对象基础(类和对象)总结
086 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 03 面向对象基础总结 01 面向对象基础(类和对象)总结 本文知识点:面向对象基础(类和对象)总结 说明 ...
- Java多线程系列--“基础篇”03之 Thread中start()和run()的区别
概要 Thread类包含start()和run()方法,它们的区别是什么?本章将对此作出解答.本章内容包括:start() 和 run()的区别说明start() 和 run()的区别示例start( ...
- Java基础之基础语法
前言:Java内功心法之基础语法,看完这篇你向Java大神的路上又迈出了一步(有什么问题或者需要资料可以联系我的扣扣:734999078) 一个Java程序可以认为是一系列对象的集合,而这些对象通过调 ...
- # 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封装 ...
- 098 01 Android 零基础入门 02 Java面向对象 03 综合案例(学生信息管理) 02 案例分析及实现 02 编写并测试Subject类
098 01 Android 零基础入门 02 Java面向对象 03 综合案例(学生信息管理) 02 案例分析及实现 02 编写并测试Subject类 本文知识点:编写并测试Subject类 说明: ...
- 099 01 Android 零基础入门 02 Java面向对象 03 综合案例(学生信息管理) 02 案例分析及实现 03 编写并测试Student类
099 01 Android 零基础入门 02 Java面向对象 03 综合案例(学生信息管理) 02 案例分析及实现 03 编写并测试Student类 本文知识点:编写并测试Subject类 说明: ...
随机推荐
- 17.SQLite数据库存储
Android系统内置一个SQLite数据库,SQLite是一款轻量级的关系型数据库,它的运算速度非常快,占用资源很少,通常只需要几百K的内存就足够了. SQLite不仅支持标准的SQL语法,还遵循了 ...
- sap软件功能介绍及主要功能(模块)有哪些?
SAP 成立于 1972 年,最初称为 System Analysis Program Development (Systemanalyse Programmentwicklung),后来采用缩写 S ...
- php对接飞书机器人报警接口
<?php function request_by_curl($remote_server, $post_string) { $ch = curl_init(); curl_setopt($ch ...
- 搭建ubuntu开发环境
tar -xzvf VMwareTools-10.0.6-3595377.tar.gz cd vmware-tools-distrib 再执行:sudo ./vmware-install.pl ...
- mysql索引相关知识
一.什么情况下会使索引失效? 二.sql优化您们是怎么做的? 1.首先开启数据库慢查询日志,定位到查询效率比较低的sql , 找出对应的sql语句并进行分析 1.表设计是否规范,是否符合三范式的标准( ...
- py正则与re模块
正则表达式符号介绍 按照博客中的表格罗列的去记即可 了解 \w,\s,\d与\W,\S,\D相反的匹配关系(对应的两者结合就是匹配全局) \t匹配制表符 \b匹配结尾的指定单词 优先掌握 ^:以什么什 ...
- vue3导出功能
proxy.$axios.own.get(url,{ responseType: 'blob' //首先设置responseType字段格式为 blob}).then(res => { let ...
- SQL逻辑查询语句执行顺序—练习题
在做练习题之前要重点熟悉select 的执行顺序 1.SELECT语句关键字的定义顺序 SELECT DISTINCT <select_list> FROM <left_table& ...
- 解决: 无法打开明确指定的数据库“SSISDB”, 用户 'NT Service\SSISScaleOutMaster150' 登录失败.
环境: WindowsServer2019Datacenter SQL Server2019 SSMSv18 事情: SQL安装完成后, 发现系统日志中有如下报错: 解决: 无法打开明确指定的 ...
- nacos 1.4.2 建立集群,公司启动linux服务器常用命令
2022-7-29 编写micro自动处理脚本,并加入了守护精灵进程 先启动prop1 服务器(xx.1xx.165.186) 再启动prop2服务器 (xx.1xx.174.173) ####### ...