易截截图软件、单文件、免安装、纯绿色、仅160KB

发现一个c++多态与java多态不同的地方

刚刚看到一篇文章提出c++多态与java多态不同的地方,基本意思如下:
请看C++代码:
class Base
{
public:
 Base()
 {
  init(); 
 }
 virtual ~Base() {}
protected:
 int value;
 virtual void init() 
 { 
  value = 100;     
 }
};
class Derived : public Base
{
public:
 Derived()
 {
  init();
 }
protected:
 void init() 
 {
  cout << "value = " << value << endl;
  // 做一些额外的初始化工作 
 }
};
int main(int argc, char* argv[])
{
 Base* pb;
 pb = new Derived();
 delete pb;
 return 0;
}
执行结果是
value = 100
再看java代码:
class Base
{
  public Base()
  {
    init();
  }
  protected int value;
  protected void init()
  {
         value = 100;  
  }
}
class Derived extends Base
{
  public Derived()
  {
    init();
  }
  protected void init()
  {
    System.out.println("value = " + value);
    // 做一些额外的初始化工作
  }
}
public class Test
{
  public static void main(String[] args)
  {
    Base base = new Derived();
  }
}
执行结果是
value = 0
value = 0
在java中子类的init方法重写了父类的init方法,导致不能正确完成初始化。看到这里我思考了一下,由于子类重写了父类的同名函数,才导致本应该执行的函数没有执行,如果修改父类的初始化函数或者子类的初始化函数,使子类不会发生重写,是不是就不会发生上面的情况?或许即使是子类与父类,当涉及到各自的初始化的地方时就不应该使用多态性。


相关文档:

java中如何使用amcharts


最近公司碰到需要用图表的形式显示一些数据,我就开始到网上查询,查到了jfreechart和amcharts,这两者我都实现过了,jfreechart最后生成图片,但是图片效果不是我想要的,然后又研究amcharts 它的效果确实很好,而且官方网站上还有好些例子可供下载,网址是:www.amcharts.com
(想要完成一个amcharts图形需要swfobjects. ......

【JAVA学习笔记】02 运算符、表达式

一、运算符
 
算术运算符:+,-,*,/,%,++,--
关系运算符:>,<,>=,<=,==,!=
布尔逻辑运算符:!,&,^,|,&&,||
位运算符:&,|,^,>>,<<,>>>
赋值运算符:=
扩展赋值运算符:+=,-=,*=,/=
字符串链接运算符:+
 
两数相除,那么如果 ......

Java的垃圾回收(Garbage Collection)机制

一。谁在做Garbage Collection?
    一种流行的说法:在C++
里,是系统在做垃圾回收;而在Java
里,是Java
自身在做。
    在C++
里,
释放内存是手动处理的,要用delete运算符来释放分配的内存。这是流行的说法。确切地说,是应用认为不需要某实体时,就需用delete告诉系统,可
以 ......

Java序列化简明概要

1. 概念: 序列化就是把对象变成对象流(确切说是把对象的属性写入流),如果需要进而可以把对象流存成二进制文件;
2. 目的: 序列化的目的是为了方便永久存储或者网络传输;
3. 如何实现: 将类实现Serializable接口即可,无必须实现的方法,实现该接口只是为了标识该类可被序列化;
4. (转)其他需要知道的:
  ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号