当前位置: 首页 > article >正文

java 第12天 单例 接口

一.设计模式之单例模式

*饿汉式/醉汉式  步骤:

  1. 创建私有化构造方法
  2. 私有的 静态的 属于本类类型的对象
  3. 公共的 静态的返回本类对象的方法
// 醉汉式/饿汉式
class Moon{
	// 1 私有化构造方法
	private Moon(){}

	// 2 创建一个私有的静态的属于本类类型的对象
	private static Moon only = new Moon();

	// 3 提供一个公共的 静态的 返回本类对象的方法
	public static Moon getOnly(){
		return only;
	}
}

 *懒汉式 尚不完善 需要枷锁

.synchronized 枷锁

public class TestSingle2{
	public static void main(String[] args){

	}
}
// 懒汉式-
class Moon{

	private Moon(){}

	private static Moon only;// 0xA

	// 一个资源 getOnly()
	// 张三Moon.getOnly() 0xA 时间片 3ms
	// 李四Moon.getOnly()0xA 时间片 5ms
	// 张三 李四 李四 张三
	public static synchronized Moon getOnly(){
		if(only == null){
			// 时间片耗尽 张三====
			only = new Moon();// 0xA
		}

		return only;// 0xA
	}
}

二.java中的四大类型

1.class类

2.enum 枚举类

3.interface 接口类

4.@interface 注释类

四大类型都能产生对应的.class文件

三.接口类 interface

接口中注意的点

接口中的注意点
1. 接口中的属性默认有 public static final 修饰
2. 接口中的方法默认有 public abstract 修饰
3. 接口不能直接创建对象?不可以。防止调用抽象方法
接口可以间接创建对象【创建的同时 + 所有抽象方法全部实现】 
interface USB{
void connect();
}
// USB uu = new USB(); // 报错
main():
// 匿名类
// 一次性
USB uu = new USB(){
@Override
public void connect(){}
};

面试题:接口和抽象类的区别

1 类型不同
接口 interface
抽象类 class
2 属性不同
接口中的属性默认有 public static final 修饰
抽象类中的属性都是普通属性
3 方法不同
接口中的方法都是抽象方法
jdk8 . 0 之后接口中允许出现普通方法 但是前面必须有 static / default
jdk9 . 0 之后接口中允许出现私有方法
抽象类中既可以出现普通方法也可以出现抽象方法
4 继承关系不同
接口:多实现 多继承
抽象类:单根继承

注意点

 class class => extends

class interface => implements
interface interface => extends

接口简单使用代码

public class Exec1{
	public static void main(String[] args){
		插座 cc = new 插座();
		洗衣机 xx = new 洗衣机();
		cc.通电(xx);
	}
}
/**
	电器和插座的关系
	1 制定规范 【电器的规范】
		属性:220v
		方法:open() close()

	2 找到类型实现上面的规范 洗衣机 冰箱

	3 找到类型使用上面的规范 插座-供电(电器)
*/
interface 电器{
	// public static final
	int v = 220;

	// public abstract
	void open();
	void close();
}

class 洗衣机 implements 电器{
	@Override
	public void open(){
		System.out.println("打开洗衣机");
	}

	@Override
	public void close(){
		System.out.println("关闭洗衣机");
	}
}

class 插座{
	public void 通电(电器 dd){
		dd.open();
		System.out.println("插座通电");
		dd.close();
	}
}


http://www.kler.cn/news/356261.html

相关文章:

  • Redis入门到精通(二):入门Redis看这一篇就够了
  • 云黑系统全解无后门 +搭建教程
  • 保研考研机试攻略:python笔记(1)
  • 初识git · 远程操作
  • DAY52WEB 攻防-XSS 跨站反射型存储型DOM 型标签闭合输入输出JS 代码解析
  • Python 独立成分分析(ICA) 详解与应用案例
  • 什么是ASC广告?Facebook ASC广告使用技巧
  • 量纲分析的巅峰之作:Taylor点源爆炸模型产生始末
  • 【软件】Ubuntu下QT的安装和使用
  • 深入剖析:.Net8 引入非root用户运行的新特性提升应用安全性
  • 【AI学习】Mamba学习(九):HiPPO LegS版本
  • 05.栈介绍+实现
  • NGINX 的 Event Loop
  • 3.3关节组件
  • setuptools封装自己python包
  • Linux与Windows文件共享:Samba的详细配置(Ubuntu)
  • Spring 和 javaEE的关系
  • 基于 UDP 协议的 socket 编程:实现 UDP 服务器
  • 概率 多维随机变量与分布
  • 枸杞常见病虫害识别数据集(猫脸码客 第220期)