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类 说明: ...
随机推荐
- mybatis-plus主键生成策略(实体类配置,数据库插入数据自动生成id)
转载:MyBatisplus -- ActiveRecord(AR)_mybatisplus idtype.auto_憨憨浩浩的博客-CSDN博客 0.auto:自动增长(mysql,sql serv ...
- socket简记-消息格式
1 原理 1.1 数据格式 Packet header + Application body + Packet Tail 本协议中数据字节序为Little endian(超过一个字节的数据类型在内存中 ...
- M1 IntelliJ IDEA2022安装报错解决方法
下载地址:http://pan.jizhouyun.com/s/I3QJVzk3et 报错一:系统权限问题 报错示例: 1.XX已损坏,打不开:您应该将它移到废纸娄/已损坏 2.打不开:您应该推出磁盘 ...
- 调度器44—root_domain—更新路径
1. root_domain 的路径的赋值路径 kernel_init_freeable //内核初始化路径调用 [2] sched_init_smp //core.c 传参 cpu_active_ ...
- Oracle的Pctfree
1.创建一张表 create table student( student_id number ); 但是在pl/sql中查看却是以下的建表语句: -- Create table create tab ...
- 《Rust权威指南》学习笔记——4. 认识所有权
Rust权威指南学习笔记--认识所有权 什么是所有权 1. 所有权规则 Rust中的每一个值都有一个对应的变量作为它的所有者. 在同一时间内,值有且仅有一个所有者. 当所有者离开自己的作用域时,它持有 ...
- 蓝桥杯训练赛二-2021 问题 G: 坐标排序
题目描述 请将坐标x,y,z依照以下规则排序: x为第一关键字,当x相同时,依照y(第二关键字)大小来排序,当y相同时,依照z大小来排序(第三关键字) 给出了若干坐标,和一个数k,请输出按关键字排序第 ...
- 安装zookeeper 和 kafka
本文用到的同步脚本 https://www.cnblogs.com/sdgtxuyong/p/16907986.html 一 . 安装zookeeper 修改hosts文件,将test1,test ...
- leetcode-36-有效数独,leetcode-37-求解9*9数独
#include <iostream> #include <vector> #include <utility> #include <unordered_ma ...
- 【翻译】了解Flink-概览 -- Learn Flink-Overview
了解Flink: 上手手册 目录 手册目标和范围 流处理 并行数据流 及时的流处理 有状态流处理 通过状态快照进行容错 翻译来源 Learn Flink:Overview , Learn Flink: ...