1.为什么Java不能多继承?
java
因为会出现像上图一样的菱形继承问题,B和C都继承了A,而D又同时继承了B和C
,而D实例化后会包含基类A的两个子对象,如果直接继承会引发访问不明确(二义性),以及数据冗余.
C++未解决这个问题,提出了虚函数.
2.System.exit(0),System.exit(1)与return的关系?
1. System.exit(int status) 中的exit()方法用于直接中断
JVM,其中的 int status 用来表示状态码,零状态码表示正
常终止整个程序.非零则为不正常终止
2. return 只是返回,表示一个方法的终止,并不影响其他方法的执行(在堆栈中我理解就是返回一个地址,然后继续执行剩下的代码)
3. 抽象方法(abstract)
抽象类是为了把相同的但不确定的东西提取出来,为了以后的重用,而定义成抽象类的目的,就是在子类中实现抽象类
3.1抽象类与普通类的区别?
1. 首先抽象类不能被实例化
2. 抽象类中可以有普通方法也可以有抽象方法
3. 子类是普通类,必须实现父类的抽象方法
4. 子类是抽象类,不一定实现父类的抽象方法
4.class对象
每个类的运行时的类型信息就是用Class对象表示的,包含了与类有关的信息,实例化对象也是通过Class对象创建的.
- 加载 :这是由类的加载器(classloader)执行的.通过一个类的全限定名来获取其定义的二进制字节流(Class字节码),将这个字节流所代表的静态存储结构转化为方法区的运行时数据接口(我觉得应该是方法表),根据字节码在Java堆中生成一个代表这个类的Java.lang.Class对象
- (以后再写)
5.接口(interface)
- 接口是一系列方法的声明 ,是一些方法特征的集合
- 一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现.而且实现可以具有不同的功能
- 只能含有抽象方法默认修饰 public abstract
- 没有构造方法
- 只能含有 public final static修饰的常量
interface inter {
void fun(){} //默认为 public abstract 修饰
- 类和接口之间实现用 implements
- 类和类之间用 extends