成员变量

反射

偶尔善良 提交于 2020-03-04 08:12:43
反射:框架设计的灵魂 反射:将类的各个组成部分封装为其他对象,这就是反射机制 好处 1.可以在程序运行过程中,操作这些对象。 2.可以解耦,提高程序的可扩展性。 类加载器是将.class文件加载进内存 Class对象功能: * 获取功能: 1. 获取成员变量们 * Field [ ] getFields ( ) :获取所有 public 修饰的成员变量 * Field getField ( String name ) 获取指定名称的 public 修饰的成员变量 * Field [ ] getDeclaredFields ( ) 获取所有的成员变量,不考虑修饰符,反射获取成员变量不受修饰符限制。 * Field getDeclaredField ( String name ) 2. 获取构造方法们 * Constructor < ? > [ ] getConstructors ( ) * Constructor < T > getConstructor ( 类 < ? > . . . parameterTypes ) * Constructor < T > getDeclaredConstructor ( 类 < ? > . . . parameterTypes ) * Constructor < ? > [ ] getDeclaredConstructors ( ) 3.

Java中内部类

那年仲夏 提交于 2020-03-03 21:23:32
1.四种内部类:成员内部类、局部内部类、匿名内部类和静态内部类。 2.成员内部类 2.1成员内部类可以无条件访问外部类的所有成员属性和成员方法(包括private成员和静态成员)。 2.2成员内部类 隐藏现象 不过要注意的是,当成员内部类拥有和外部类同名的成员变量或者方法时,会发生隐藏现象,即默认情况下访问的是成员内部类的成员。如果要访问外部类的同名成员,需要以下面的形式进行访问: 1 2 外部类. this .成员变量 外部类. this .成员方法   虽然成员内部类可以无条件地访问外部类的成员,而外部类想访问成员内部类的成员却不是这么随心所欲了。在外部类中如果要访问成员内部类的成员,必须先创建一个成员内部类的对象,再通过指向这个对象的引用来访问: 2.3内部类可以拥有private访问权限、protected访问权限、public访问权限及包访问权限。 2.4为什么成员内部类可以无条件访问外部类的成员? 编译器会默认为成员内部类添加了一个指向外部类对象的引用,虽然我们在定义的内部类的构造器是无参构造器,编译器还是会默认添加一个参数,该参数的类型为指向外部类对象的一个引用,所以成员内部类中的Outter this&0 指针便指向了外部类对象,因此可以在成员内部类中随意访问外部类的成员。从这里也间接说明了成员内部类是依赖于外部类的,如果没有创建外部类的对象,则无 法对Outter

C#第一节

淺唱寂寞╮ 提交于 2020-03-03 17:24:05
C#是一种简洁、现代、面向对象且类型安全的编程语言。是运行在.Net FarmWork 和 .Net core 之上的编程设计语言 C#开发是一种开发效率高,运行速度快,是有C语言和C++演变而来的。 Java既是一种平台,也是一种语言 .Net core近几年开发的平台,优点是可跨平台运行。编写的语言既可以在Windows平台上运行,也可以在Linux平台上运行,以及其他平台 1、C#和.net 的区别 就像演员和舞台,C#是演员,.Net是平台,平台给演员提供资源,也给其他演员(C++\VB等)提供场地。这名演员只能在平台上表演。但可以表演很多东西(V\B,C\B) 在VS上编写 2、C# 特性: 垃圾回收 (Garbage collection) 将自动回收不再使用 的对象所占用的内存; 异常处理 (exception handling) 提供了结构化和可扩展的错误检测和恢复方法; 类型安全 (type-safe) 的语言设计则避免了读取未初始化的变量、数组索引超出边界或执行未经检查的 类型强制转换等情形。 3、C# 具有一个同一类型系统 (unified type system)。   所有 C# 类型(包括诸如 int 和 double 之类的基元类 型)都继承于一个唯一的根类型:object。因此,所有类型都共享一组通用操作,并且任何类型的值都能够以一致的方式进行存储

Java之面向对象

故事扮演 提交于 2020-03-03 00:18:59
6.1 面向过程与面向对象 什么叫面向对象? 面向对象(Object-Oriented,简称OO)就是一种常见的程序结构设计方法。 面向对象思想的基础是 将相关的数据和方法放在一起 ,组合成一种新的复合数据类型,然后使用新创建的复合数据类型作为项目的基础。 面向对象是一个很抽象的概念,它相对面向过程而言。 过程与对象都是一种解决问题的思想。 面向过程:强调的是功能行为 ,面向过程就是分析出实现需求所需要的步骤,通过函数一步一步实现这些步骤,接着依次调用即可 ,也就是一种过程, 先干啥, 再干啥; 面向对象:将功能封装到对象里,强调的是具备某功能的对象; 面向对象是把整个需求按照特点、功能划分,将这些存在共性的部分封装成对象,创建了对象不是为了完成某一个步骤,而是描述某个事物在解决问题的步骤中的行为 按照面向对象的思想,可以把任何的东西看做对象! 面向过程和面向对象一定是互斥的吗 ?肯定不是 我们在处理问题时可以完全的面向过程 但是不能完全面向对象。举个例子来说: 你让女朋友做饭 你这个角度而言 面向对象 从女朋友这个角度而言呢?如果GF做 面向过程;如果GF不做 叫外卖 面向对象 从餐馆这个角度而言呢?应该是要做饭 面向过程;如果餐馆不做 可以叫别家餐馆做 .....别的餐馆都不做 这个饭始终没人做 相互踢皮球 从中可以看出什么 这个事最终要被处理-面向过程 所以

VC学习笔记:对话框

筅森魡賤 提交于 2020-03-02 05:48:06
VC学习笔记:对话框 SkySeraph NOV.11st 2009 HQU Email-zgzhaobo@gmail.com QQ-452728574 Latest Modified Date:Oct.31th 2010 HQU 重新翻阅整理 //说明:孙鑫视频学习笔记 SkySeraph NOV.11st 2009 HQU /*【对话框专题知识】*/ //知识点:创建对话框;显示对话框; //新建Single Document程序 void CMyBoleView::OnDialog() //对话框的响应函数 { //首先创建一个新的对话框资源,并增加一个相关的类[CTestDlg]用来操作该资源。再增加一个菜单项(view类)用来显示该对话框。【每增加一个新对话框都需增加一个相关类来做相关处理】 //▲注意:要在view类头文件里包含testdlg.h,才能在菜单项的消息响应函数使用该类。 /*■1.<<创建、显示、关闭模态对话框>>*/ CTestDlg dlg; //此处是局部变量,但不要紧,因为程序会暂时停下来等模态对话框关闭后再运行; dlg.DoModal();//创建并显示模态对话框 / *■2.<<创建、显示、销毁非模态对话框>>*/ //>>错误写法:CTestDlg dlg; //▲不能定义成局部变量。局部变量两种处理方法:[1]定义成view类的成员变量;

Java关键字this、super使用总结

依然范特西╮ 提交于 2020-03-02 05:46:28
一、this 关键字 Java关键字this只能用于成员方法体内,它是一个系统隐含的指针且被自动附加在非静态的成员方法参数列表中。当一个对象被创建后,Java虚拟机(JVM)就会给这个对象分配一个引用自身的指针,这个指针的名字就是this。 当前时刻,哪个对象调用该函数,那么this就指向当前调用该函数的对象(this也可以理解为当前(上下文)对象),系统会自动在该函数的参数列表中添加一个 隐藏的 this指针,并且把调用该函数的对象的地址值赋给this指针,这样一来,在函数的内部通过this就可以 访问 当前正在调用该函数的 对象的成员 (包括成员变量、成员方法)。 因此,this只能在类中的非静态方法中使用,静态方法和静态的代码块中绝对不能出现this(指针),这在“Java关键字static、final使用总结” 一文中给出了明确解释。 并且this只和特定的对象关联,而不和类关联,同一个类的不同对象有不同的this。 下面给出一个使用this的综合实例,以便说明问题: package org.leizhimin; public class Test6 { private intnumber; private String username; private Stringpassword; private intx = 100; public Test6(int n) {

PHP类的变量与成员,及其继承、访问与重写要注意的问题

被刻印的时光 ゝ 提交于 2020-03-02 03:52:54
PHP的类及其实例: <?php class Myclass{ public $prop = 123; } $obj = new Myclass(); ?> 类的成员属性(属性的称呼相对于‘方法’而言)包括类常量和类变量,其中类常量在定义时不可为空, 类的属性在定义时如果被赋值,只能使用变量和数组,并且不能是表达式 ,因为类属性在编译期被初始化,PHP在编译器不执行表达式。 1、 成员的访问控制 public:可以继承,可以在类的方法之外被访问,如$obj->prop; protected:可以继承,不可以在类的方法之外被访问; private:不可以继承,不可以在类的方法之外访问; PHP4使用var来声明类的属性,在PHP5之后不再使用,PHP5.3之前使用被警告,在PHP5.3之后可以在public之前或单独使用作为public的别名。 这三个访问控制关键字也可以修饰构造函数,当private和protected修饰类的构造函数时,只能通过一个public static的静态方法调用构造函数以实例化对象,因为该构造函数无法在类之外被访问了,比如,单例类的实现: <?php class Singleton{ private static $instance = null ; public $k = 88; private function __construct(){ }

Java基础之继承

|▌冷眼眸甩不掉的悲伤 提交于 2020-03-01 20:24:34
一、继承的特点: Java只支持单继承,不支持多继承,即一个类只能有一个父类,不可以有多个父类 class A { } class B { } class C extends A,B { } //这种写法错误 Java支持多层继承 例如: class A { } class B extends A { } class C extends B { } 二、继承中成员变量的特点: 子类只能获取父类的非私有成员 子父类中成员变量的名字若不一样,则直接获取父类的成员变量 子父类中成员变量名字若一样,则获取的是子类中的成员变量 super: 可以获取父类的成员变量和成员方法,用法和this是相同的 就近原则: 如果有局部变量就使用局部变量 如果没有局部变量,有子类的成员变量就使用子类的成员变量 如果没有局部变量和子类的成员变量,有父类的成员变量就用父类的成员变量 三、继承中成员方法的特点 方法的重写: 在子父类中,子类的方法和父类的方法完全一样,子类重写了父类的方法(即覆盖),当子类重写了父类的方法之后,使用子类对象调用的就是子类的方法。 方法的重载: 在一个类中,有多个重名的方法,但是其中参数不一样(参数的个数,参数的类型,参数的顺序),和返回值无关。 四、继承中构造方法的执行顺序 在有子父类继承关系的类中,创建子类的对象,调用的是子类的构造方法

结构体的认识与访问

给你一囗甜甜゛ 提交于 2020-03-01 20:10:34
#5.1 定义结构 ##什么是结构? 结构由数目固定的成员构成,各成员可以具有不同的数据类型,包括基本类型和非基本类型。一个结构变量在内存占有一片连续的存储空间,但是,因为各个数据成员的类型不同,所以具有特定的定义和访问形式。 ##如何定义结构体? 结构类型是用户自定义数据类型,以关键词struct标识,由结构类型名、各成员的名称和类型定义。 例如: struct 标识符 { 类型 成员 1; 类型 成员 2; …… 类型 成员 n; } 5.2#访问结构 例 访问结构变量: # include <iostream> using namespace std ; struct weather { double temp ; double wind ; } ; int main ( ) { weather today ; today . temp = 10.5 ; today . wind = 3.1 ; cout << "temp=" << today . temp << endl ; cout << "wind=" << today . wind << endl ; } ; 如果用指针访问结构,所指对象包含了结构的数据成员,则访问形式为: *(指针).成员 或 指针->成员 例如,有说明:employee2 secretary,*pp=&secretary; #5.3结构数组

Java基础知识

时光怂恿深爱的人放手 提交于 2020-03-01 19:38:43
1 面向对象和面向过程的区别 面向过程:   优点:性能高。直接编译。   适用:单片机、嵌入式开发、Linux/Unix 面向对象:   特点:封装、继承、多态   优点:易维护、易复用、易扩展、可移植(数据类型、跨平台)   缺点:性能低。调用类时需要实例化、开销大、消耗资源。其次是半编译语言,最终的执行代码并不是可以被直接被CPU执行的二进制机械码。 2 java语言的特点   a. 面向对象(封装、继承、多态)   b. 平台无关性:由JVM实现,“一次编译,随处运行”   c. 支持多线程、网络编程等功能;   d. 编译和解释并行:解释是运行时翻译成机器代码     解释:JVM类加载器加载字节码文件,通过解释器逐行解释执行,执行速度较慢。     编译:有些代码块和方法经常被调用(热点代码)。         JIT(Just In Time)编译器属于运行时编译。第一次编译后,会将字节码对应的机器代码保存下来,下次可以直接使用。执行效率高。编译的是热点代码。 3 JVM、JDK、JRE   JVM是运行java字节码(.class文件)的虚拟机。实现跨平台。    JDK:java开发工具。可以创建和编译程序。   JRE:java运行时环境。 4 Java和C++的区别   共同:都是面向对象的语言   访问内存:c++支持指针访问内存   继承:c+