静态方法

类属性,类方法和静态方法

人走茶凉 提交于 2020-01-31 20:40:08
类属性,类方法和静态方法 1.类属性 类方法 类属性:针对类对象定义的属性 使用赋值语句在class关键字下可以定义类属性 类方法:针对类对象定义的方法 在类方法内部可以直接访问类属性或者调用其他的类方法 class Toy(object): # 使用赋值语句 记录所有的玩具数量 count = 0 def __init__(self,name): self.name = name # 让类属性+1 Toy.count += 1 @classmethod def show_toy_count(cls): print('玩具对象的数量 %d' %(cls.count)) # 创建玩具对象 toy1 = Toy('乐高') toy2 = Toy('泰迪熊') # 调用类方法 Toy.show_toy_count() 2.静态方法 静态方法:通过类名调用静态方法,不需要创建对象,直接就可以调用 class Cat(object): @staticmethod def call(): print('喵喵~') # 静态方法:通过 类名. 调用静态方法 # 不需要创建对象 直接就可以调用 Cat.call() 来源: CSDN 作者: _nigar 链接: https://blog.csdn.net/nigar_/article/details/104119654

小白学Java:内部类

别来无恙 提交于 2020-01-31 17:17:58
目录 小白学Java:内部类 内部类的分类 成员内部类 局部内部类 静态内部类 匿名内部类 内部类的继承 内部类有啥用 小白学Java:内部类 内部类是封装的一种形式,是定义在类或接口中的类。 内部类的分类 成员内部类 即定义的内部类作为外部类的一个普通成员(非static),就像下面这样: public class Outer { class Inner{ private String id = "夏天"; public String getId() { return id; } } public Inner returnInner(){ return new Inner(); } public void show(){ Inner in = new Inner(); System.out.println(in.id); } } 我们通过以上一个简单的示例,可以得出以下几点: Inner类就是内部类,它的定义在Outer类的内部。 Outer类中的returnInner方法 返回一个Inner类型的对象 。 Outer类中的show方法通过我们熟悉的方式创建了Inner示例并访问了其私有属性。 可以看到,我们像使用正常类一样使用内部类,但实际上,内部类有许多奥妙,值得我们去学习。至于内部类的用处,我们暂且不谈,先学习它的语法也不迟

Python面向对象编程

折月煮酒 提交于 2020-01-31 11:20:28
Python面向对象编程 类和类的属性、方法 __repr__方法与__str__方法 静态属性 实例方法、类方法与静态方法 类的property属性 类的继承 类的属性为另一个类的实例 类和类的属性、方法 import datetime class Book : def __init__ ( self , title , price = 0.0 , author = '' , pubate = datetime . date . today ( ) ) : # 构造方法,可以给属性赋默认值 self . title = title # self代表类的实例 self . price = price self . author = author self . pubate = pubate def print_info ( self ) : # 类的一般方法 print ( '本书信息如下:' ) print ( '标题:{}' . format ( self . title ) ) print ( '价格:{}' . format ( self . price ) ) print ( '作者:{}' . format ( self . author ) ) print ( '出版日期:{}\n' . format ( self . pubate ) ) book1 = Book

Java自学.接口学习笔记!

↘锁芯ラ 提交于 2020-01-31 00:04:30
接口学习笔记 文章目录 接口学习笔记 1.接口的概述与生活中的举例 2.接口定义的基本格式 3.接口的抽象方法 3.1接口抽象方法的定义 3.2接口的抽象方法使用 4.接口的默认方式 4.1接口的默认方法定义 4.2接口的默认方法使用 5.接口的静态方法 5.1 接口的静态方法定义 5.2接口的静态方法使用 7. 接口的私有方法 7.1接口的私有方法定义 7.1.1接口的普通私有方法定义 7.1.2接口的静态私有方法定义 7.2接口的普通私有方法使用静态私有方法执调用 8.接口的常量 8.1接口的常量的定义 8.2接口的常量的使用 9.接口内容小结 1.接口的概述与生活中的举例 接口的概述与生活中的举例 生活中举例 电源擦桌当中的电源接口 ,不管是手机还是电脑还是其他电器、充电或者使用都学要使用电源接口。因为在制作电器过程中他们的接口都是统一的符合国家标准的,只要符合规范标准就可以大家通用。 再例如U盘 只要符合USB接口标准 那么各种设备都可以使用。 所以接口就是一种公共的规范标准 ! 2.接口定义的基本格式 Interface 接口 接口是多个类的公共规范。 接口是一个引用数据类型 最重要的内容就是其中的:抽象方法。 如何定义一个接口: 格式 public interface 接口名称 (){ 接口内容 } 3.接口的抽象方法 3.1接口抽象方法的定义

Java 内部类

老子叫甜甜 提交于 2020-01-30 21:09:41
1.非静态内部类 非静态内部类可以直接在一个类里面定义,实例化非静态内部类时必须建立在一个外部类实例化的基础上 语法:new 外部类().new 内部类(); 非静态内部类可以访问外部类的private实例属性 1 public class Hero { 2 private String name; // 姓名 3 4 float hp; // 血量 5 6 float armor; // 护甲 7 8 int moveSpeed; // 移动速度 9 10 // 非静态内部类,只有一个外部类对象存在的时候,才有意义 11 // 战斗成绩只有在一个英雄对象存在的时候才有意义 12 class BattleScore { 13 int kill; 14 int die; 15 int assit; 16 17 public void legendary() { 18 if (kill >= 8) 19 System.out.println(name + "超神!"); 20 else 21 System.out.println(name + "尚未超神!"); 22 } 23 } 24 25 public static void main(String[] args) { 26 Hero garen = new Hero(); 27 garen.name = "盖伦"; 28 //

【设计模式】单例模式

喜夏-厌秋 提交于 2020-01-30 19:32:39
单例模式 单例模式: 保证一个类仅有一个实例,并提供一个全局访问点。 将构造函数放到private里,并提供全局访问点(static静态函数,返回类内部唯一构造实例) 为什么用静态函数,静态成员变量? 调用类里的函数需要先构造对象,有对象才能调用类内成员方法。但这个方法肯定不适合单例模式。 而另一种方法就是静态函数,可以使用类名直接调用。而静态函数只能调用静态成员方法。 上述代码属于 懒汉模式 :在第一次用到类实例的时候才会去实例化,访问量较小时, 采用懒汉式,以时间换空间。 分析: 最内层的判断,保证单线程肯定智能创建一个对象。 外面的锁,保证创建的过程是原子操作。 在外面的判断,保证只有第一次回加锁,后面就会重复加锁,再判断。 还有一个 饿汉式: 在单例类定义的时候就进行实例化。访问量较大、线程较多时, 采用饿汉式,以空间换时间。 线程安全,因为一开始就实例化了。 来源: https://www.cnblogs.com/LampsAsarum/p/12243514.html

浏览器缓存知识小结及应用

谁说胖子不能爱 提交于 2020-01-30 16:37:04
浏览器缓存,也就是客户端缓存,既是网页性能优化里面静态资源相关优化的一大利器,也是无数web开发人员在工作过程不可避免的一大问题,所以在产品开发的时候我们总是想办法避免缓存产生,而在产品发布之时又在想策略管理缓存提升网页的访问速度。了解浏览器的缓存命中原理,是开发web应用的基础,本文着眼于此,学习浏览器缓存的相关知识,总结缓存避免和缓存管理的方法,结合具体的场景说明缓存的相关问题。希望能对有需要的人有所帮助。 1 浏览器缓存基本认识 它分为强缓存和协商缓存: 1.1 浏览器在加载资源时,先根据这个资源的一些http header判断它是否命中强缓存,强缓存如果命中,浏览器直接从自己的缓存中读取资源,不会发请求到服务器。比如某个css文件,如果浏览器在加载它所在的网页时,这个css文件的缓存配置命中了强缓存,浏览器就直接从缓存中加载这个css,连请求都不会发送到网页所在服务器; 1.2 当强缓存没有命中的时候,浏览器一定会发送一个请求到服务器,通过服务器端依据资源的另外一些http header验证这个资源是否命中协商缓存,如果协商缓存命中,服务器会将这个请求返回,但是不会返回这个资源的数据,而是告诉客户端可以直接从缓存中加载这个资源,于是浏览器就又会从自己的缓存中去加载这个资源; 1.3 强缓存与协商缓存的共同点是:如果命中,都是从客户端缓存中加载资源,而不是从服务器加载资源数据

Java设计模式-单例模式的7种写法详解(上)

余生颓废 提交于 2020-01-30 10:11:31
Java设计模式-单例模式的7种写法详解(上) 参照B站尚硅谷官方视频资源:https://www.bilibili.com/video/av57936239?p=33 文章目录 Java设计模式-单例模式的7种写法详解(上) 0.前言 1.饿汉式(静态常量)实现单例模式 1.1 实现步骤 1.2 具体编码 1.3 测试验证 1.4 阶段小结 2.饿汉式(静态代码块)实现单例模式 2.1 实现步骤 2.2 具体编码 2.3 测试验证 2.4 阶段小结 3.懒汉式(线程不安全)实现单例模式 3.1实现步骤 3.2具体编码 3.3测试验证 3.4阶段小结 4.懒汉式(线程安全,同步方法)实现单例模式 4.1实现步骤 4.2具体编码 4.3测试验证 4.4阶段小结 5.一种错误的写法:懒汉式(同步代码块) 5.1实现步骤 5.2具体编码 5.3测试验证 5.4阶段小结 0.前言 单例模式: 确保此类只有一个实例,并提供获取实例的方法。 作用: 可以保持在一个应用程序生命周期内,所引用对象的实例均为同一个 使用场景:例如工具类,使用了单例模式后,可避免重复创建实例造成的资源浪费。 单例模式分为以下7种: 饿汉式(静态常量) 饿汉式(静态代码块) 懒汉式(线程不安全) 懒汉式(线程安全,同步方法) 双重检查 静态内部类 枚举 也可说是5种,只是懒汉饿汉各自又有2种不同的实现方式。

13:接口

时光毁灭记忆、已成空白 提交于 2020-01-30 08:04:32
1:java接口 package com . edu . cn ; /* 接口是多个类公共规范。 接口是一种引用数据类型,最重要的内容在其中:抽象方法。 如何定义一个接口的格式 public interface 接口名称{ //接口内容。 } 备注:换成了关键字interface之后,编译生成的字节码文件仍然是.java ---> .class 如果是java7,那么接口可以包含有; 1:常量 2:抽象方法 如果是java8,还可以额外包含有: 3:默认方法 4:静态方法 如果是java,还可以包含有: 5:私有方法 */ /* 接口使用步骤: 1:接口不能直接使用,必须有一个“实现类”来“实现”该接口 格式: public class 实现类名称 implements 接口名称 { // .... } 2:接口的实现类必须覆盖重写(实现)接口所有的抽象方法。 实现,去掉abstract关键字,加上方法体大括号。 3:创建实现类的对象,进行使用。 */ public class Demo01Interface implements MyInterfaceAbstract { @Override public void methodAbs1 ( ) { System . out . println ( "第一个方法!" ) ; } @Override public void

Java设计模式——代理模式

百般思念 提交于 2020-01-30 07:56:27
代理模式 学习目标 掌握代理模式的应用场景和实现原理。 应用场景 保护目标对象:客户并不知道对象是如何实现具体业务功能的,只要调用代理对象的接口就行了。 增强目标对象:在实现目标对象的业务功能之前或者之后做一些业务实现。 Spring-AOP 实现原理 静态代理:代理对象持有被代理对象的引用。由被代理对象实现目标业务。 动态代理:代理对象持有被代理对象的引用,代码运行产生一个新的 java 类,并被编译重新加载,然后在新的类中执行目标业务实现动态代理。 了解静态代理和动态代理的区别。 静态代理:被代理对象在代码中被写死了,不易扩展,适用于简单的业务,代码复用性不高,违背开闭原则。 动态代理:只要是实现了同一个接口的被代理类,都可以代理实现,实现了业务扩展。代码复用,遵循开闭原则。 了解 CGLib和JDK-proxy 的区别。 JDK-proxy 动态代理:实现了被代理对象的接口,生成新的class字节码,利用反射调用实现代理。 无法代理不实现代理业务接口的方法。 CGLib 动态代理:继承被代理对象,生成新的class字节码,通过 fastclass 机制调用实现代理。 无法代理被final关键字修饰的方法 代理模式的定义 为其他对象提供一种代理,以控制对这个对象的访问。代理对象在客户端和服务端起到中介的作用。是一种结构型 设计模式 。 静态代理 /** *