class A{ private $url; public function __construct(){ $this->url = $_SERVER['PATCH_INFO']; } public static function get(){ var_dump(self::$url);//出错,说静态变量未初始化 var_dump($this->url);//也出错,说无法使用this; } } get里想取出$url该如何实现?方法如下: class A { //方法1 private s…
一.实例成员与类成员 1. 当类的字节码被加载到内存, 类中类变量.类方法即被分配了相应内存空间.入口地址(所有对象共享). 2. 当该类创建对象后,类中实例变量被分配内存(不同对象的实例变量互不相同,即分配了不同的内存空间): 类中实例方法被分配入口地址(创建第一个对象时分配:方法的入口地址被所有的对象共享:所有对象都不存在时,方法的入口地址才被取消). 3. 在同一类中,类中的实例方法总是可以操作该类中的实例变量和类变量:类方法总是可以操作该类中的类变量.(与访问限制符没有关系)     二…
我想对于每个Java程序员来说,接口都不陌生,接口中的方法也经常使用.而接口中的成员变量,就显得用得少一点,而对于成员变量为什么必须声明为public static final,可能就更不清楚了,而且我觉得大多数不清楚为什么要用 static 和 final.下面我们就来解释一下. 一.为什么要用final? 首先,我们应该明白一个问题.接口,实际上比抽象类更加抽象,它是最高层次的抽象.接口中的所有方法都是抽象方法,不会有任何实现方面的代码,而它的具体实现是要靠实现这个接口的具体类来具体实现的.…
interface”(接口)可将其想象为一个“纯”抽象类.它允许创建者规定一个类的基本形式:方法名.自变量列表以及返回类型,但不实现方法主体.接口也可包含基本数据类型的数据成员,但它们都默认为public.static 和final.接口中定义的方法默认为public.abstract. 为什么Java接口中的成员变量默认为(public.static.final).成员方法为(public.abstract)呢? 接口是一种高度抽象的模版,接口中的成员变量是模版的一部分,其接口的实现类必须共有…
查看更加详细的解析请参考这篇文章:http://blog.51cto.com/9291927/2148695 看一个静态绑定的例子: 1 #include <iostream> 2 3 using namespace std; 4 5 class A 6 { 7 public: 8 int a = 3; 9 void test1() 10 { 11 printf("test A\n"); 12 } 13 void test2() 14 { 15 cout <<…
package java09; //创建父类 public class Fu { int numFu = 10; int num =100; public void methodFu(){ System.out.println(num); } } package java09; //创建子类 public class Zi extends Fu { int numZi = 20; int num =200; public void methodZi(){ System.out.println(n…
成员变量:包括实例变量和类变量,用static修饰的是类变量,不用static修饰的是实例变量,所有类的成员变量可以通过this来引用. 类变量:静态域,静态字段,或叫静态变量,它属于该类所有实例共有的属性.而且所有的实例都可以修改这个类变量的值(这个类变量没有被final修饰的情况),而且访问类变量的时候不用实例,直接用类名.的方式就可以. 成员方法:包括实例方法和类方法,用static的方法就是类方法,不用static修饰的就是实例方法.实例方法必须在创建实例之后才可以调用. 类方法:和类变…
Java中的成员变量和局部变量 一:成员变量: 成员变量在类中定义,用来描述对象将要有什么 成员变量可以被本类的方法使用,也可以被其他类的方法使用,成员变量的作用域在整个类内部都是可见的 二:局部变量: 在类的方法中定义,在方法中临时保存 只能被当前方法使用,局部变量的作用域仅限于定义它的方法 如: public class Telphone { float screen; //成员变量 float cpu; //成员变量 float mem; //成员变量 public void call()…
这是在面试中遇到的一个问题,没有答出来,后来上网上查了一些资料,终于弄明白了: 一.首先c++标准规定成员变量必须在调用构造函数前进行初始化(这一点很重要) 二.如果我们在构造函数中对成员变量进行初始化,那么在进入构造函数之前,编译器会调用该成员变量的默认构造函数对成员变量进行初始化,当进入构造函数后,我们对成员变量初始化又会调用复制构造函数,之前的编译器调用的默认构造函数等于浪费了,它做了无用功,降低了效率. 三.如果我们用参数列表的形式对成员变量进行初始化,就不会调用成员变量的默认构造函数了…
在从汇编看c++中指向成员变量的指针(一)中讨论的情形没有虚拟继承,下面来看看,当加入了虚拟继承的时候,指向成员变量的指针有什么变化. 下面是c++源码: #include <iostream> #include <cstdio> using namespace std; class Top { public: int _top; }; class Left : public virtual Top { public: int _left; }; class Right : pub…