A. java 中子类继承父类的字段时,占用的是同一块内存还是父类和子类对象分别占用各自的一块内存,请高人详答
java语言中的对象采用的堆和栈的形式来存放,例如 Father f = new Father();f存放在栈中,其实只是一个堆内存的地址,真正地对象保存在此地址所指向的堆内存中。
所以你的答案就显而易见了,Father f = new Father(); Child c = new Child();这里Father是父类,Child是子类,f和c是两个不同的内存地址,他们的对象保存的地方也不同,所以他们的字段也不会再同一片内存区域。
如果父类中有个字段a,子类继承了父类的这个字段a,其实就是子类的那个内存区域里面也会有一个a字段,父类的内存区域中也有a字段,他们两个没有什么关系。
B. java中定义一个类可以同时继承两个类
java中一个类不能直接继承两个类。
比如说这样:class A extends B,C
不能这样写,因为java不支持多继承,但是可以像下面这样实现继承多个类:
class A extends B
class C extends A
这样C就同时继承了B和A两个类。
(2)java继承例子扩展阅读
当子类继承了某个类之后,便可以使用父类中的成员变量,但是并不是完全继承父类的所有成员变量。具体的原则如下:
1)能够继承父类的public和protected成员变量;不能够继承父类的private成员变量;
2)对于父类的包访问权限成员变量,如果子类和父类在同一个包下,则子类能够继承;否则,子类不能够继承;
3)对于子类可以继承的父类成员变量,如果在子类中出现了同名称的成员变量,则会发生隐藏现象,即子类的成员变量会屏蔽掉父类的同名成员变量。如果要在子类中访问父类中同名成员变量,需要使用super关键字来进行引用。
C. 什么是继承,试说明在java中实现多继承的方法
继承:是对象之间的层次关系(父类、子类)。需要用到extends关键字。一个类只能有一个父类。
继承的作用:是子类可以直接调用父类的方法,可以重写拓展父类的方法属性。
方法的重写:子类和父类的方法相同(名字、参数列表和返回类型都相同、是否有static修饰也一样)子类的权限不能比父类的小,抛出异常不能比父类大。
java中没有直接多继承。只能间接实现多继承。
通过接口、抽象类实现多继承如:A抽象类继承了B类实现了多个接口,C继承A类。
通过内部类如:A类继承了B类,A类中的内部类InnerA类继承了C类。那么InnerA类实例可以调用C类的方法也可以调用A类的方法。
D. java中一个接口可以继承几个接口吗
可以,接口是常量值和方法定义的集合,是一种特殊的抽象类,可以继承多个接口。例如:Interface3 Extends Interface0, Interface1, interface……。
java接口解析如下:
在Java中,定义一个接口的形式如下:
[public] interface InterfaceName {
}
接口中可以含有变量和方法。但是要注意,接口中的变量会被隐式地指定为public static final变量,而方法会被隐式地指定为public abstract方法且只能是public abstract方法,并且接口中所有的方法不能有具体的实现、
也就是说,接口中的方法必须都是抽象方法。
要让一个类遵循某组特地的接口需要使用implements关键字,具体格式如下:
class ClassName implements Interface1,Interface2,[....]{
}
可以看出,允许一个类遵循多个特定的接口。如果一个非抽象类遵循了某个接口,就必须实现该接口中的所有方法。对于遵循某个接口的抽象类,可以不实现该接口中的抽象方法。
(4)java继承例子扩展阅读:
java继承接口的特性:
1)一个类如果实现了一个借口,则要实现该接口的所有方法。
2)方法的名字、返回类型、参数必须与接口中完全一致。如果方法的返回类型不是void,则方法体必须至少有一条return语句。
3)因为接口的方法默认是public类型的,所以在实现的时候一定要用public来修饰(否则默认为protected类型,缩小了方法的使用范围)。