C++和Java的多继承
多继承:
C++中的类可以直接实现多继承 如:class D:public A,public B,public C{……};
Java中不能直接实现这样的多继承,但是可以用接口(interface)来间接实现 如:
public class A{ ……}
public interface C{
public void c1();
public void c2();
}
public class C extends A implements B{
//若A中有构造函数则在子类中必须手动调用构造函数 super(<参数>);
//必须重写接口B的所有方法
public void c1(){ // 实现接口 }
public void c2(){ //实现接口 }
……
}
从上面的代码我们还可以发现一个细节:C++中类的定义必须在类体的大括号后加上一个分号(;)但是Java中没有这样的要求。
在c++的多继承中,要注意这样一个问题:基类A,子类B、C继承基类A,子类D同时继承自B和C,代码如下:
#include<iostream>
using namespace std;
class A{
public:
int iVarA;
};
class B:public A{ //继承
public:
int iVarB;
};
class C:public A{
public:
int iVarC;
};
class D:public B,public C{
public:
int iVarD;
};
int main(){
D Dtemp;
Dtemp.iVarA = 10; //注意这里产生了歧义 VC6.0报错:error C2385: 'D::iVarA' is ambiguous(歧义的)
return 0 ;
}
产生上面的歧义是由于在Dtemp中变量iVarA的引用是歧义的。这种歧义性是由于D通过类B继承了iVarA的一份拷贝,又通过C继承了iVarA的一份拷贝。
解决这个问题可以有两种方法,其一使用作用域分解运算符:
int main(){
D Dtemp;
Dtemp.B::iVarA = 10;
Dtemp.C::iVarA = 10;
return 0;
}
那么另一种方法就是使用虚基类,详见下一篇..
相关文档:
(
1
)
+=
:sum += 1;
相当于
sum = sum + 1;
(
2
)
++ --
:i++ i
加
1, i-- i
减
1, ++
或
—
放在数值后,表示执行运算后加(减)
1
,反正数值前表示执行运算前加(减)
1
(
3
)
?
: :
int n = a<10?1:2
表示如果
a
小于
10
则
n
等于
1
否则等于
2
(
4
......
Java编写一个函数交换两个变量的值
Java函数在传递过程中只能够传值,不能传址。这样,函数的参数在函数内部做任何变化就都不会反映到外部调用者来。所以解决之道就是要找到要交换对象的引用。对于普通的值类型,像int或者double这样的可以改传他们的包装类Integer和Double。而对于本来就是引用类型的对象,则需要对他们再 ......
每个网页或请求都是一个url地址,一般,这个地址可能是.do,.page,.action之类的并加上'?'号、'&'号查询串等构成的一个长长的的url。很urgly。
一般的url----------------------------------------------------------较好的url
http://www.xxx.net/user/profile.do?id=20001 ====> http://www.xxx.ne ......
在9.10中可以在终端中使用apt-get命令进行安装。这种方法比较简单。不过个人认为 对于初学者,还是手动安装比较好,可以熟悉很多东西。
1.下载jdk和jre
登录sun网站http://java.sun.com/javase/downloads/index.jsp,下载jdk-6u18-linux-i586.bin和jre-6u18-linux-i586.bin。注意在官网中
有两个下载地址,一个是jdk-6u1 ......
java枚举
为什么要定义枚举?
问题:要定义星期几或性别的变量,该怎么定义?假设用1-7分别表示星期一到星期日,但有人可能会写成int weekday = 0;
枚举就是要让某个类型的变量的取值只能为若干个固定值中的一个,否则,编译器就会报错,枚举可以让编译器在编译时就可以控制程序中填写的非法值,普通变量的方式在开发阶� ......