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类 说明: ...
随机推荐
- (0319) uvmgen的使用,产生的UVM环境介绍
qq https://blog.csdn.net/hh199203/article/details/118210541
- 基于注解的AOP
1.引入依赖 <!--spring aop依赖--> <dependency> <groupId>org.springframework</groupId&g ...
- LocalDateTime与LocalDate
时间新特性 新生事物出现,必定是对旧事物的完善或者是缺陷的弥补. 本文章介绍LocalDate.LocalDateTime.在多线程的情况,相比较于Date.Calendar.SimpleDateFo ...
- 掌控安全学院SQL注入靶场延时注入
第一关 第二关
- ansible笔记第二章(ansible-varable变量)
(1)变量类型 1.1在playbook文件中的play使用变量 [root@m01 project1]# cat vars_1.yml - hosts: oldboy vars: - web_p ...
- VMware VirtualCenter Servere服务不能启动
故障现象现象:VMware VirtualCenter Servere服务不能启动 解决办法:进入%programdata%\VMware\VMwareVirtualCenter\Logs目录下面. ...
- jmeter中监听器及测试结果分析
- Python-celery介绍与快速上手
1.celery介绍: celery是一个基于Python开发的模块,可以帮助我们在开发过程中,对任务进行分发和处理. 详细介绍取自:Python之celery的简介与 ...
- MySQL时区的问题
我这里是在application.properties文件中配置的MySQL连接信息. 开始时间显示不征程是因为没有配置时区,后来加上了setTimeZone=Asia/Shanghai,时间显示正常 ...
- WebApi EF Core 2.1 Code First 设置导航属性,外键
Nuget: Microsoft.AspNetCore.All Microsoft.EntityFrameworkCore//Include 导航属性在此空间 Microsoft.EntityFram ...