类对象

C++对象模型:单继承,多继承,虚继承

泄露秘密 提交于 2019-12-24 14:13:08
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 什么是对象模型 有两个概念可以解释C++对象模型: 语言中直接支持面向对象程序设计的部分。 对于各种支持的底层实现机制。 类中成员分类 数据成员分为静态和非静态,成员函数有静态非静态以及虚函数 class data members:static和nonstatic class data functions:static、nonstatic和virtual 比如: class Base { public: Base(int i) :baseI(i){}; int getI(){ return baseI; } static void countI(){}; virtual void print(void){ cout << "Base::print()"; } virtual ~Base(){} private: int baseI; static int baseS; }; 对象模型分类 简单对象模型 :这个模型非常地简单粗暴。在该模型下,对象由一系列的指针组成,每一个指针都指向一个数据成员或成员函数,也即是说,每个数据成员和成员函数在类中所占的大小是相同的,都为一个指针的大小。这样有个好处——很容易算出对象的大小,不过赔上的是空间和执行期效率。所以这种对象模型并没有被用于实际产品上。 表格驱动对象模型

JAVA-基础-继承

喜欢而已 提交于 2019-12-24 10:45:08
继承 在java中,类的继承是指在现有类的基础上去构建一个新的类,这个构建的新的类被称为子类,现有的类为父类,子类会自动拥有父类所有的可继承的属性和方法. 格式和使用: extends 关键字 格式: class 子类 extends 父类 { } 子类在继承父类的时候会自动拥有父类的成员 代码演示: * 定义员工类Employee */ class Employee { String name; // 定义name属性 // 定义员工的工作方法 public void work() { System.out.println("尽心尽力地工作"); } } /* * 定义研发部员工类Developer 继承 员工类Employee */ class Developer extends Employee { // 定义一个打印name的方法 public void printName() { System.out.println("name=" + name); } } * 定义测试类 */ public class Example01 { public static void main(String[] args) { Developer d = new Developer(); // 创建一个研发部员工类对象 d.name = "小明"; // 为该员工类的name属性进行赋值

java —— 内部类

China☆狼群 提交于 2019-12-23 17:54:41
/*--> */ /*--> */ 普通内部类   静态内部类   局部内部类   匿名内部类 内部类   内部类是定义在另一个类中的类,定义内部类会起到的作用有以下三点:    1、内部类方法访问该类定义所在的作用域中的数据,包括私有的数据。    2、内部类可以对同一个包中的其他类隐藏起来   3、当想定义一个回调函数且不想写大量代码,使用匿名(anonymous)内部类会更加便捷。   下面用简单的内部类例子说明内部类的使用方式。 class OuterClass { private int outId = 0; private String outName = "out"; public void outerShow() { System.out.println("OuterClass"); System.out.println(outId + ":" + outName); } public class InnerClass { private String inName="inner"; public void InnerShow() { System.out.println("InnerClass"); System.out.println(outName + ":"+ this.inName); } } } public class InnerClassDemo {

C++用new和不用new创建类对象区别

牧云@^-^@ 提交于 2019-12-23 16:14:26
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> new创建类对象,使用完后需使用delete删除,跟申请内存类似。所以,new有时候又不太适合,比如在频繁调用场合,使用局部new类对象就不是个好选择,使用全局类对象或一个经过初始化的全局类指针似乎更加高效。 一、new创建类对象与不new区别 下面是自己总结的一些关于new创建类对象特点: new创建类对象需要指针接收,一处初始化,多处使用 new创建类对象使用完需delete销毁 new创建对象直接使用堆空间,而局部不用new定义类对象则使用栈空间 new对象指针用途广泛,比如作为函数返回值、函数参数等 频繁调用场合并不适合new,就像new申请和释放内存一样 二、new创建类对象实例 1、new创建类对象例子: CTest* pTest = new CTest(); delete pTest; pTest用来接收类对象指针。 不用new,直接使用类定义申明: CTest mTest; 此种普通方式创建方式,使用完后不需要手动释放,该类析构函数会自动执行。而new申请的对象,则只有调用到delete时再会执行析构函数,如果程序退出而没有执行delete则会造成内存泄漏。 2、只定义类指针 这跟不用new申明对象有很大区别,类指针可以先行定义,但类指针只是个通用指针,在new之前并未为该类对象分配任何内存空间

<学习>.NET的反射基础

ⅰ亾dé卋堺 提交于 2019-12-23 13:49:09
关键词 Assembly 使用Assembly定义和加载程序集,加载在程序集清单中列出模块,以及从此程序集中查找类型并创建该类型的实例。 Module 通过它可以获取包含模块的程序集以及模块中的类等,还可以获取在模块上定义的所有全局方法或其他特定的非全局方法。 MemberInfo 这是一个基类,它定义了EventInfo、FieldInfo、MethodInfo、PropertyInfo的多个公用行为。 Type 是System命名空间下的一个类, 一般用于装载反射得到的类对象,通过Type可以得到一个类的内部信息,也可以通过它反射创建一个对象。 EventInfo 通过它可以获取事件的相关信息。如事件的名称、事件处理程序数据类型、声明类型等,还可以添加或移除事件处理程序。 FieldInfo 可以通过它获取字段的相关信息。如字段的名称、访问修饰符等,还可以获取或设置字段值。 MethodInfo 通过它可以获取方法的相关信息。例如方法的名称、返回类型、参数、访问修饰符等。使用Type的GetMethods或GetMethod方法来调用特定的方法。 PropertyInfo 通过它可以获取属性的相关信息。例如属性的名称、数据类型、声明类型和只读或可写状态等,还可以获取或设置属性值。 ConstructorInfo 通过它可以了解构造函数的属性及调用构造函数

设计模式GOF23之第二回

﹥>﹥吖頭↗ 提交于 2019-12-23 07:53:46
1. 概述 结构型模式的作用:从程序的结构上实现松耦合,从而可以扩大整体的类结构,用来解决更大的问题。 2. 适配器模式(Adapter) 将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作。 常见的的使用,字节流转字符流就是使用适配器模式。 java.io.InputStreamReader(InputStream) java.io.OutputStreamWriter(OutputStream) 3. 代理模式(Proxy) 通过代理,控制对对象的访问! 使对象专注于核心逻辑的处理。 可以详细控制访问某个(某类)对象的方法,在调用这个方法前做前置处理,调用这个方法后做后置处理。(即:AOP的微观实现!) AOP(Aspect Oriented Programming面向切面编程)的核心实现机制!实现了横向,跨类的代码共享。 应用场景: 安全代理:屏蔽对真实角色的直接访问。 远程代理:通过代理类处理远程方法调用(RMI) 延迟加载:先加载轻量级的代理对象,真正需要再加载真实对象。 分类: 静态代理(静态定义代理类) 动态代理(动态生成代理类) JDK自带的动态代理 javaassist字节码操作库实现 CGLIB ASM(底层使用指令,可维护性较差) 静态代理 动态代理 JDK自带的动态代理 java.lang

2019-05-30 java学习日记

有些话、适合烂在心里 提交于 2019-12-22 15:27:36
面向对象 四种权限修饰符 private,默认,protected,public 1,其中private的权限最小,只能在本类中访问 2,其次是默认,类名,构造方法前什么都不打, 可以在本类中和同一个包下(子类和无关类)中访问 3,然后是protected,可以在可以在本类, 同一个包下(子类和无关类),不同包下的子类中访问 4,最后是public,public的访问权限最大, 可以在可以在本类,同一个包下(子类和无关类), 不同包下的子类与不同包下的无关系类中访问 类及其组成所使用的常见修饰符 修饰符 权限修饰符:private,默认的,protected,public 状态修饰符:static,final 抽象修饰符:abstract 类 权限修饰符:默认修饰符,public 状态修饰符:final 抽象修饰符:abstract 用的最多的是:private 成员变量 权限修饰符:private,默认的,protected,public 状态修饰符:static,final 用的最多的是:private 构造方法 权限修饰符:private,默认的,protected,public 用的最多的是:public 成员方法 权限修饰符:private,默认的,protected,public 状态修饰符:static,final 抽象修饰符:abstract 用的最多的是

Java输入输出(io)流详解、图解

时光毁灭记忆、已成空白 提交于 2019-12-22 00:37:10
stream代表的是任何有能力产出数据的数据源,或是任何有能力接收数据的接收源。在 Java 的IO中,所有的stream(包括Inputstream和Out stream)都包括两种类型:   (1)字节流   表示以字节为单位从stream中读取或往stream中写入信息,即io包中的inputstream类和outputstream类的派生类。通常用来读取二进制数据,如图象和声音。   (2)字符流   以Unicode字符为导向的stream,表示以Unicode字符为单位从stream中读取或往stream中写入信息。   区别:   Reader和Writer要解决的,最主要的问题就是国际化。原先的I/O类库只支持8位的字节流,因此不可能很好地处理16位的Unicode字符流。Unicode是国际化的字符集(更何况 Java 内置的char就是16位的Unicode字符),这样加了Reader和Writer之后,所有的I/O就都支持Unicode了。此外新类库的性能也比旧的好。   但是,Read和Write并不是取代InputStream和OutputStream,有时,你还必须同时使用"基于byte的类"和"基于字符的类"。为此,它还提供了两个"适配器(adapter)"类。InputStreamReader负责将InputStream转化成Reader

objective-c 关键字和概念

梦想与她 提交于 2019-12-21 22:40:20
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> objective-c 关键字和概念 - ithero_zhou的专栏 - 博客频道 - CSDN.NET 关键字 @ 看到这个关键字,我们就应该想到,这是Object-C对C语言的扩展,例如 @interface XXX。 @interface 声明类 @implementation 实现类 @protocol 声明协议 @optional 与@protocol配合使用,说明协议中的某个或者某几个方法可以不实现 @required 与@protocol配合使用,说明协议中的某个方法或者某几个方法必须实现 @end 与 @interface ,@implementation,@protocol配合使用,代表声明或者实现结束 @encode @encode为编译器宏,它可以将类型转换为相应的字符串。 id id是指向Objective-C类对象的指针,它可以声明为任何类对象的指针,当在Objective-C中使用id时,编译器会假定你知道,id指向哪个类的对象。与void*是不同的是,void*编译器不知道也不假定指向任何类型的指针。 nil 定义为一个常量,如果一个指针的值为nil,代表这个指针没有指向任何对象。 self 在Objective-C中,关键字self与c++中this是同一概念

[Day13]static、final、匿名对象、内部类、包、修饰符、代码块

丶灬走出姿态 提交于 2019-12-21 15:50:17
1、final-最终   (1)final的 特点     final修饰类不可以被继承,但是可以继承其他类     final修饰的方法不可以被覆盖,但父类中没有final修饰方法,子类覆盖后可以加final     final修饰的变量称为 常量 ,这些变量只能赋值一次     引用类型的变量值为 对象地址值 ,地址值不能更改,但是地址内的对象属性可以修改     修改成员变量,需要对创建对象前赋值,否则报错。 2、static- 静态 ,不创建对象就可以调用方法   (1)static特点     被static修饰的成员变量 属于类 ,不属于这个类的对象     被static修饰的成员可以并且建议 通过类名直接调用方法   (2)static注意事项     静态内容是优先于对象存在,只能访问静态,不能使用super/this     同一个类中, 静态成员只能访问静态成员     main方法为静态方法仅仅为程序执行入口,它不属于任何一个对象,可以定义在任意类中   (3)定义静态常量     格式:public static final 数据类型 变量名=值;     接口中的每个成员变量都默认使用 public static final 修饰     所有接口中的成员变量已是静态常量,由于接口没有构造方法, 所以必须显示赋值。可以直接用接口访问 3.匿名对象