实例化

Java学习个人备忘录之抽象类

不打扰是莪最后的温柔 提交于 2019-12-19 05:29:10
抽象类 特点: 1. 方法只有声明没有实现时,该方法就是抽象方法,需要被abstract修饰,抽象方法必须定义在抽象类中。该类必须也被abstract修饰 2. 抽象类不可以被实例化. 为什么? 因为调用抽象方法没意义。 3. 抽象类必须有其子类覆盖了所有的抽象方法后,该子类才可以实例化,否则,这个子类还是抽象类。 abstract class 犬科 { abstract/*抽象*/ void show(); }//抽象方法所在的类也必须的抽象的. class 狗 extends 犬科 { void 吼叫() { System.out.println("汪汪"); } } class 狼 extends 犬科 { void 吼叫() { System.out.println("嗷嗷"); } } class AbstractDemo { public static void main(String[] args) { } } 细节理解: 1. 抽象类中有构造函数吗? 有,用于给子类对象进行初始化. 2. 抽象类可以不定义抽象方法吗? 可以,但是很少见,目的就是不让该类创建对象. AWT的适配器对象就是这种类. 通常这个类中的方法有方法体,但是却没有内容. abstract class Demo { void show1() {} void show2() {} } 3.

PHP面向对象(下)

旧城冷巷雨未停 提交于 2019-12-17 08:31:14
单例模式 避免多人开发过程,实例化过多导致资源浪费, 限制只实例化一次的模式 构造方法不能执行则实例化失败 思路 : 1、 保护或私有构造函数,房子外部实例化 2、 内部开发一个公共的静态方法,负责实例化 3、 类有一个静态属性存放对象 <?php class Single { //设置私有,保存实例状态 static protected $ins = NULL; //设置为私有,限制类外实例化,若没有子类可去掉final final protected function __construct() { echo '实例化成功!'; } //设置为静态方法,类外能调用,实例化 static public function getinstance() { //self代表当前类,判断是否实例化 if (self::$ins instanceof self) { return self::$ins; } self::$ins = new self(); return self::$ins; } } $s1 = Single::getinstance(); $s2 = Single::getinstance(); //子类继承父类若还要单例,要用final修饰父类构造方法, //阻止子类重写构造方法自己去new的问题 class Single2 extends Single { }

18-NioEventLoop实例化过程

谁都会走 提交于 2019-12-16 22:24:33
文章目录 NioEventLoop实例化过程 一、构造方法 1.1 NioEventLoop 1.2 SingleThreadEventLoop 1.3 SingleThreadEventExecutor 1.4 AbstractEventExecutor 二、EventLoop 与 Channel 的关联 2.1 Channel注册到EventLoop 2.2 EventLoopGroup注册Channel 三、EventLoop启动 3.1 SingleThreadEventExecutor#startThread 3.2 NioEventLoop#run 四、小结 NioEventLoop实例化过程 本文集合代码流程来分析 NioEventLoop 的实例化过程 开篇我们牢记 NioEventLoop 的两个功能: 1.处理IO事件;执行与 Channel 相关的 IO 操作, 包括调用 select 等待就绪的 IO 事件、读写数据与数 据的处理等; 2.执行提交的任务;作为任务队列, 执行 taskQueue 中的任务, 例如用户调用 eventLoop.schedule 提 交的定时任务也是这个线程执行的; 一、构造方法 实例化自然离不开构造方法,不管是我们直接构造对象还是框架内部去构造对象都会走构造方法,因为NioEventLoop 是一个最底层的实现类

六. python面向对象(内置函数)

拥有回忆 提交于 2019-12-16 17:24:14
一. 内置函数 1.@property(用于场景方法不要传递参数 且有return可以使用 就是普通函数) property 内置装饰器函数 只在面向对象中使用 函数的作用是在新式类中返回属性值。 from math import pi print(pi) class Circle: def __init__(self,r): self.r=r def per(self): # 周长 return 2*pi*self.r def aer(self): # 面积 return self.r**2*pi aa=Circle(3) print(aa.per()) print(aa.aer()) from math import pi # property() 函数的作用是在新式类中返回属性值。 把方法伪装成属性了 class Circle: def __init__(self, r): self.r = r @property # @property 把方法伪装成属性了 def per(self): # 周长 使用 @property 伪装成属性 不能单参数 return 2 * pi * self.r @property def aer(self): # 面积 return self.r ** 2 * pi aa = Circle(3) print(aa.per) #

fastJson与jackson性能对比

半世苍凉 提交于 2019-12-16 13:09:32
最近项目用到fastJson和jackson,为了决定到底弃用哪个,随手写了个测试看看到底谁的性能更胜一筹。 看到过很多对比的帖子,大多数结果是fastJson性能高于jackson,可偏偏像SpringMVC这样成熟的框架默认也采用的jsckson,这就引起了我的怀疑,决定自己动手试试 1、开始测试,用一个map往里面装10万个键值对,结果jackson速度快于fastjson,jackson大约只用了fastjson一半的时间 2、这次我们把ObjectMapper实例化部分也纳入计时,这次情况有变化了,fastJson明显比jsckson快了,请看代码(ObjectMapper实例化放到endTime下面) 根据上面的测试可以初步得出一个结论,jackson的ObjectMapper实例化是一个性能瓶颈,如果提前准备好实例会比fastJson要快一倍左右,随后我打开ObjectMapper构造方法看了下,确实比较繁琐,因此在实际应用中我们转json字符串的时候应当使用同一个ObjectMapper实例,避免每次手动去new新的实例,而FastJson是用静态方法(JSONObject.toJSONString())因此我们在常规使用的时候不方便像jsckson那样把实例提前准备好。 来源: CSDN 作者: 程序猿-Allen 链接: https://blog.csdn

Java设计模式—单例模式

喜夏-厌秋 提交于 2019-12-16 10:48:15
单例模式 什么是单例模式? 单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。 注意: 1、单例类只能有一个实例。 2、单例类必须自己创建自己的唯一实例。 3、单例类必须给所有其他对象提供这一实例。 为什么要用单例模式? **意图:**保证一个类仅有一个实例,并提供一个访问它的全局访问点。 **主要解决:**一个全局使用的类频繁地创建与销毁。 **何时使用:**当您想控制实例数目,节省系统资源的时候。 **如何解决:**判断系统是否已经有这个单例,如果有则返回,如果没有则创建。 **关键代码:**构造函数是私有的。 应用实例: 1、一个班级只有一个班主任。 2、Windows 是多进程多线程的,在操作一个文件的时候,就不可避免地出现多个进程或线程同时操作一个文件的现象,所以所有文件的处理必须通过唯一的实例来进行。 3、一些设备管理器常常设计为单例模式,比如一个电脑有两台打印机,在输出的时候就要处理不能两台打印机打印同一个文件。 优点: 1、在内存里只有一个实例,减少了内存的开销,尤其是频繁的创建和销毁实例

设计模式--单例模式

生来就可爱ヽ(ⅴ<●) 提交于 2019-12-15 04:47:38
单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。 这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。 注意: 1、单例类只能有一个实例。 2、单例类必须自己创建自己的唯一实例。 3、单例类必须给所有其他对象提供这一实例。 1 介绍 意图 :保证一个类仅有一个实例,并提供一个访问它的全局访问点。 主要解决 :一个全局使用的类频繁地创建与销毁。 何时使用 :当您想控制实例数目,节省系统资源的时候。 如何解决 :判断系统是否已经有这个单例,如果有则返回,如果没有则创建。 关键代码 :构造函数是私有的。 应用实例 : 1、一个班级只有一个班主任。 2、Windows 是多进程多线程的,在操作一个文件的时候,就不可避免地出现多个进程或线程同时操作一个文件的现象,所以所有文件的处理必须通过唯一的实例来进行。 3、一些设备管理器常常设计为单例模式,比如一个电脑有两台打印机,在输出的时候就要处理不能两台打印机打印同一个文件。 优点: 1、在内存里只有一个实例,减少了内存的开销,尤其是频繁的创建和销毁实例(比如管理学院首页页面缓存)。 2、避免对资源的多重占用(比如写文件操作)。 缺点 :

【死磕 Spring】—— IoC 之 Bean 的实例化策略:InstantiationStrategy

ε祈祈猫儿з 提交于 2019-12-13 12:11:11
本文主要基于 Spring 5.0.6.RELEASE 摘要: 原创出处 http://cmsblogs.com/?p=todo 「小明哥」,谢谢! 作为「小明哥」的忠实读者,「老艿艿」略作修改,记录在理解过程中,参考的资料。 在开始分析 InstantiationStrategy 之前,我们先来简单回顾下 Bean 的实例化过程: Bean 的创建,主要是 AbstractAutowireCapableBeanFactory#doCreateBean(...) 方法。在这个方法中有 Bean 的实例化、属性注入和初始化过程,对于 Bean 的实例化过程这是根据 Bean 的类型来判断的,如果是单例模式,则直接从 factoryBeanInstanceCache 缓存中获取,否则调用 #createBeanInstance(...) 方法来创建。 在 #createBeanInstance(...) 方法中,如果 Supplier 不为空,则调用 #obtainFromSupplier(...) 实例化 bean。如果 factory 不为空,则调用 #instantiateUsingFactoryMethod(...) 方法来实例化 Bean 。如果都不是,则调用 #instantiateBean(...) 方法来实例化 Bean 。但是无论是

c++纯虚函数

狂风中的少年 提交于 2019-12-13 08:19:09
打造c++抽象类 与其他语言的抽象类相似,抽象类不能实例化,也不能作为函数的参数,只可以作为指针类型或者引用类型 抽象类的基本特征 #pragma once #include<iostream> using namespace std; class jetplane { private: protected: public: virtual void loadweapon(string type,int num)=0;//最显著特征,成员函数声明为virtual,并且等于0 virtual void warfare()=0; }; 当然抽象类不能实例化 #include<iostream> #include"jetplane.h" void main() { jetplane tornado(); } 报错: 严重性 代码 说明 项目 文件 行 禁止显示状态 错误 C2259 “jetplane”: 不能实例化抽象类 myabstractcls c:\users\administrator\source\repos\myabstractcls\myabstractcls\mymain.cpp 5 2.解决多重继承的二义性问题 目前,要求多重继承的类有共同的基类,否则多重继承的二义性仍旧无法解决 实例化的类可以作为抽象类的接口使用 jetplane *p =&mig31 p-

为什么必须在何处以及为什么要放置“模板”和“类型名”关键字?

橙三吉。 提交于 2019-12-12 18:43:23
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 在模板中,为什么必须在哪里以及为什么要在依赖名称上放置 typename 和 template ? 无论如何,从属名称到底是什么? 我有以下代码: template <typename T, typename Tail> // Tail will be a UnionNode too. struct UnionNode : public Tail { // ... template<typename U> struct inUnion { // Q: where to add typename/template here? typedef Tail::inUnion<U> dummy; }; template< > struct inUnion<T> { }; }; template <typename T> // For the last node Tn. struct UnionNode<T, void> { // ... template<typename U> struct inUnion { char fail[ -2 + (sizeof(U)%2) ]; // Cannot be instantiated for any U }; template< > struct inUnion<T> { };