类对象

管理器(objects)

时间秒杀一切 提交于 2020-02-19 21:24:03
管理器 说明 模型类.objects.查询函数 中的objects是什么呢,这个就是管理器。 objects是django自动生成的管理器对象,通过这个管理器对象可以实现对数据的查询 type ( Book . objects ) < class 'django.db.models.manager.Manager' > 查看objects的类型,可以看到objects是models.Manager的一个对象 作用 管理器的作用 改变查询集的结果 添加额外的方法(原来里面没有进行封装的方法,可以自己添加着进行使用) 改变查询集的结果: 改变查询集的结果说白了就是让重写原来的查询函数,让它又特定的功能。只不过是将它封装在管理器类中。 代码演示: class BookInforManage ( models . Manager ) : #重写父类的方法 def all ( self ) : books = super ( ) . all ( ) return books . filter ( book_id__gt = '4' ) 继承父类的all方法后,然后进行改写,将满足条件的封装进来. 然后可以看到,再次调用all方法的时候,就不会将所有的对象展现出来了,只会将满足条件的筛选出来,这里是书籍编号大于4的筛选出来。 运行结果: 可以看到再次调用all方法的时候,出现的并不是所有的对象

spring面向切面编程(AOP)

谁说我不能喝 提交于 2020-02-19 04:04:29
AOP(Aspect Oriented Programing)面向切面编程 AOP是一种编程范式,隶属于软工范畴,指导开发 者如何组织程序结构 AOP弥补了OOP的不足,基于OOP基础之上进行 横向开发 AOP联盟 一、OOP范式编程 OOP规定程序开发以类为模型,一切围绕对象进行, OOP中完成某个任务首先构建模型,基于模型展开 业务 OOP主要应用于WEB开发,围绕OOP的主思想, 对开发过程进行了分层设计 二、AOP范式编程 AOP范式编程研究的不是层与层之间的关系,也不 是每层内部如何开发,AOP主要关注同一层面的各 个不同功能模块之间的共性功能。 AOP时代的到来,使开发模块化的思想进行了进一 步的提升,从刀耕火种的纯手工开发阶段,向半自 动化/自动化阶段进行了一个大的突破。IT研发朝着 “插拔式组件体系结构”又近了一步。 三、基本概念(重点) 1、连接点(Joinpoint) 2、切入点(Pointcut) 3、通知(Advice) 4、目标对象(Target Object) 5、AOP代理(AOP Proxy) 6、织入(Weaving) 7、切面(Aspect) 1、连接点(Joinpoint) ①、程序运行过程中,JVM负责程序运行。执行到某个 方法时,JVM能识别当前执行的是哪个方法。这些 定义在类中的方法,每个具有独立的功能,在AOP 中

Java接口与多态

一笑奈何 提交于 2020-02-19 01:56:40
接口 可以理解为一种特殊的类,里面全部是由全局常量(static final)和公共的抽象方法所组成 接口的定义格式 接口的数据成员,只允许被public, static, final修饰。 接口的方法成员,只允许被public, abstract修饰。 Interface 接口名称{   private static final int var1=1; //error   public static final int var2 = 2;   public abstract void fun1();   private abstract int fun2(); //error. } 接口中的数据成员都为static final类型,必须进行初始化,且接口的数据成员的值不能被修改,允许省略static, final关键字。 接口中的方法必须是“抽象方法”,不能有方法体,允许省略public及abstract关键字 public interface A{   int num; //error. 没初始化   String name = “test”;   public void getName( ) {……} //error.不允许定义方法体 } 接口的实现 接口不能用new运算符直接产生对象,必须利用其特性设计新的类,再用新类来创建对象 与抽象类一样,接口要使用也必须通过子类

C++中的类型识别

你。 提交于 2020-02-16 01:14:58
文章目录 1 C++中的类型识别 1.1 类型识别的基本概念 1.2 利用多态得到动态类型 1.3 typeid关键字 1 C++中的类型识别 1.1 类型识别的基本概念 在面向对象中可能出现下面的情况: 基类指针指向子类对象。 基类引用成为子类对象的别名。 静态类型和动态类型的概念: 静态类型:变量(对象)自身的类型。 动态类型:指针(引用)所指向对象的实际类型。 1.2 利用多态得到动态类型 利用多态得到动态类型: 在基类中定义虚函数返回具体的类型信息。 所有的派生类都必须实现类型相关的虚函数。 每个类中的类型虚函数都需要不同的实现。 编程实验:动态类型识别 # include <iostream> # include <string> using namespace std ; class Base { public : virtual string type ( ) { return "Base" ; } } ; class Derived : public Base { public : string type ( ) { return "Derived" ; } void printf ( ) { cout << "I'm a Derived." << endl ; } } ; class Child : public Base { public : string

JAVA封装

安稳与你 提交于 2020-02-15 20:13:42
第一节 什么是JAVA中的封装 面向对象的三大特性:封装、继承、多态。 1.概念:将类的某些信息隐藏在类的内部,不允许外部程序直接访问,而是通过该类提供的方法,来实现对隐藏信息的操作和访问。 2.好处: a只能通过规定的方法访问数据 b隐藏类的实例细节,方便修改和实现 3.封装的实现步骤 修改属性的可见性,改为设为private;创建getter/setter方法,用于属性的读写,创建一个特定的方法,一般是gettersetter方法,可以在gettersetter方法中加入属性控制语句,对属性值的合法性进行判断,举例来说: public float getScreen(){ return screen; } public void setScreen(float screen){ this.screen=screen; } 第二节 使用包管理JAVA中的类 封装的类名可能冲突,用包可以解决 1.包的作用,管理JAVA文件夹,管理同名文件冲突 2.定义包,package关键字 3.系统中的包 java.(功能).(类) java.lang.类 包含java语言基础的类 java.util.类 包含java与语言中的各种工具类 java.io.类 包含输入输出相关功能类 4.包的使用 import 使用关键字可以在某个文件中使用其他文件中的类,全部都是小写 import com

Java多线程之Future与FutureTask

对着背影说爱祢 提交于 2020-02-15 10:40:57
转载请注明原文地址: http://www.cnblogs.com/ygj0930/p/6561154.html 一:Future 在使用实现Callable创建线程时,call()方法是有返回值的。那么,我们在编程时用什么来代表这个 线程执行后才能返回的未来结果 呢?那就是 Future类型。 顾名思义,Future——未来值,我们用这个未来值来代替编程中需要用到线程结果的地方,然后在实际运行时,通过 future.get() 方法来获取线程的真正运行结果。 Future接口有一个泛型参数,其类型与call()方法的返回值类型要一致,也就是说,Future<V> 只是代表 V类型的未来值 而已,不是真的有值存在,需要用到这个具体的值时,就需用V类型的对象future通过get()获取线程的实际运行结果值。 (注:JDK8中提供了 CompletableFuture,用来设置线程的完成时间 。Future最令人诟病的就是要等待,要自己去检查任务是否完成了,在Future中,任务完成的时间是不可控的,CompletableFuture解决了这个问题。) 二:FutureTask FutureTask是一种 可以取消的(在线程执行完成之前取消) 异步线程,它实现了Runnable接口和Future接口,也就是说:它既可以运行线程,又可以携带返回结果。故:实现runnable创建的线程类

String类详解

半城伤御伤魂 提交于 2020-02-15 04:12:07
一、基本内容: String类:即字符串类,其主要构造方法为:  String(String Original),把字符串封装成字符串对象;  举例:String s1 = new String(“hello”);  String(char[] value),把字符数组的数据封装成字符串对象;  举例:char[] chs = {‘h’,‘e’,‘l’,‘l’,‘o’};        String s2 = new String(chs);  String(char[] value,int index, int count),从索引index开始把count个字符数组值封装成字符串对象。  举例:char[] chs = {‘h’,‘e’,‘l’,‘l’,‘o’};      String s3 = new String(chs,1,3);  最为简单的一种方法是直接构造法:  举例:String s4 = “hello”; new创建与直接赋值:针对创建的String类的对象,通过构造方法创建的String对象,存放在java虚拟机的堆内存,堆内存里存放的是字符串常量的地址,字符串常量存放在方法区的常量池中;通过直接赋值所创建的对象直接是方法区中的常量池中的字符串常量。而语句(s1==s2)是比较s1和s2中存放的地址,显然不相同,但是s2和s3的地址相同,则会得到true结果

面向对象——多态

随声附和 提交于 2020-02-15 03:50:12
多态 1 . extends 继承或者 implements 实现,是 多态性 的前提。 2. 一个对象拥有多种形态 ,这就是:对象的多态性。例如:小明是一个对象,这个对象既有学生形态,也有人类形态。 3. 代码当中体现多态性,其实就是一句话: 父类引用指向子类对象 。 // 格式:继承 父类名称 对象名 = new 子类名称(); // 或者格式:接口 接口名称 对象名 = new 实现类名称(); 4. 访问成员变量的两种方式: 直接通过对象名称访问成员变量:看等号左边是谁,优先用谁,没有则向上找。 间接通过成员方法访问成员变量:看该方法属于谁,优先用谁,没有则向上找。 5. 在多态的代码当中,成员方法的访问规则是:看new的是谁,就优先用谁,没有则向上找。 总结:(编译只的是编译时,即eclipse、IDEA等集成软件中敲代码时;运行时点击运行后) 成员方法:编译看左边,运行看右边。 成员变量:编译看左边,运行还看左边。 6. 好处:无论右边new的时候换成那个子类对象,等号左边调用方法都不会变化。 7. 对象的向上转型,其实就是多态写法:格式:父类名称 对象名 = new 子类名称(); a. 含义:右侧创建一个子类对象,把它当做父类来看待使用。 b. 注意事项: 向上转型一定是安全的。从小范围转向了大范围。 弊端: 对象一旦向上转型为父类,那么就无法调用子类原本持有的内容

java与C++的区别

不问归期 提交于 2020-02-14 17:46:42
“作为一名C++程序员,我们早已掌握了面向对象程序设计的基本概念,而且Java的语法无疑是非常熟悉的。事实上,Java本来就是从C++衍生出来的。”   然而,C++和Java之间仍存在一些显著的差异。可以这样说,这些差异代表着技术的极大进步。一旦我们弄清楚了这些差异,就会理解为什么说Java是一种优秀的程序设计语言。本附录将引导大家认识用于区分Java和C++的一些重要特征。   (1) 最大的障碍在于速度:解释过的Java要比C的执行速度慢上约20倍。无论什么都不能阻止Java语言进行编译。写作本书的时候,刚刚出现了一些准实时编译器,它们能显著加快速度。当然,我们完全有理由认为会出现适用于更多流行平台的纯固有编译器,但假若没有那些编译器,由于速度的限制,必须有些问题是Java不能解决的。   (2) 和C++一样,Java也提供了两种类型的注释。   (3) 所有东西都必须置入一个类。不存在全局函数或者全局数据。如果想获得与全局函数等价的功能,可考虑将static方法和static数据置入一个类里。注意没有象结构、枚举或者联合这一类的东西,一切只有“类”(Class)!   (4) 所有方法都是在类的主体定义的。所以用C++的眼光看,似乎所有函数都已嵌入,但实情并非如何(嵌入的问题在后面讲述)。   (5) 在Java中,类定义采取几乎和C++一样的形式。但没有标志结束的分号

面向对象设计原则之依赖倒转原则

假如想象 提交于 2020-02-14 08:09:01
如果说开闭原则是面向对象设计的目标的话,那么依赖倒转原则就是面向对象设计的主要实现机制之一,它是系统抽象化的具体实现。依赖倒转原则是 Robert C. Martin 在 1996 年为“ C++Reporter ”所写的专栏 Engineering Notebook 的第三篇,后来加入到他在 2002 年出版的经典著作“ Agile Software Development, Principles, Patterns, and Practices ”一书中。依赖倒转原则定义如下: 依赖倒转原则 (Dependency Inversion Principle, DIP) :抽象不应该依赖于细节,细节应当依赖于抽象。换言之,要针对接口编程,而不是针对实现编程。 依赖倒转原则要求我们在程序代码中传递参数时或在关联关系中,尽量引用层次高的抽象层类,即使用接口和抽象类进行变量类型声明、参数类型声明、方法返回类型声明,以及数据类型的转换等,而不要用具体类来做这些事情。 为了确保该原则的应用,一个具体类应当只实现接口或抽象类中声明过的方法,而不要给出多余的方法,否则将无法调用到在子类中增加的新方法。 在引入抽象层后,系统将具有很好的灵活性,在程序中尽量使用抽象层进行编程,而将具体类写在配置文件中,这样一来,如果系统行为发生变化,只需要对抽象层进行扩展,并修改配置文件,而无须修改原有系统的源代码