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类 说明: ...
随机推荐
- [vsCode]Visual Studio Code环境变量不同步
很奇怪的事情,在设置好Path环境变量后,powershell正常了, 但是vscode不正常 解决方法竟然是: 确认{在PowerShell运行正常}后,关闭{vsCode},进入{管理员模式的Po ...
- ncnn 加载 bin文件时,出错 报异常 0xC0000094:Integer division by zero。
这次转yolov8.pt 到 onnx 到 ncnn,调用ncnn,加载bin文件时出错报异常 0xC0000094:Integer division by zero. 解决方式: 导出onnx时,加 ...
- Python - Numpy 学习笔记
#python - Numpy learning import numpy as np #---Numpy学习笔记---(第四章)--- #切片,浅拷贝 a = np.arange(10) print ...
- 解决vscode中,powershell中conda activate无效--更改vscode默认的shell为anaconda shell
问题记录: windows系统里,cmd可以正常使用conda activate 命令,但是在powershell中,使用conda activate既不报错(说明路径没问题),也没激活conda环境 ...
- Ubuntu下CodeBlocks控制台程序中文显示乱码解决问题
今天在CodeBlocks下折腾来半天,终于把中文乱码给解决了,其实很简单. 在环境设置里进行如下设置:把Terminal to launch console programs那个选项改成gnome- ...
- 我和Java这些年的故事(六)
从2006年开始,我就在建设自己的网站,从2008年到2011年,我托管了四年自己的服务器,那时阿里云还没有兴起,只能自己买服务器,放到托管商机房里去,他们给你一个IP.机器全部是自己运维. IBM内 ...
- 正确引用R及R包
R版本不断更新,为保证数据可重复性,引用R时需标注出对应的R版本.那么如何引用呢? 打开R,键入citation(),得到对应的版本引用信息. To cite R in publications us ...
- RabbitMQ学习第七章:消息确认机制之事务机制
RabbitMQ消息确认机制之事务机制. RabbitMQ中,我们可以通过持久化数据 解决RabbitMQ服务器异常 的数据丢失问题. 问题:生产者将消息发送出去,消息到底有没有到达RabbitMQ服 ...
- 给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数,使得它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在唯一答案
var threeSumClosest = function(nums, target) { let ans = nums[0] + nums[1] + nums[2]; const len = nu ...
- python学习●错误点●expected an indented block
报错:expected an indented block 翻译:缩进错误 因为python判断句无{},所以要缩进空格代表优先级.