1、简单来说,一切都是可继承。但public、protected、private等控制了在代码中的访问权。看下例: class A { private int getValue(){ return 0; } protected int getI() { return getValue(); } }class B extends A {
} A a = new A(); System.out.print(a.getI()); //输出0 B b = new B(); System.out.print(b.getI()); //输出0因此几种资料说法不同,我认为是角度不一样。从类的内部构造来说,是完全继承的;如果从访问权角度来说,则不是的。 2、默认构造器(即不带任何参数的那个构造器)是可被继承的,其他构造器不能被继承(在这一点上,各种语言处理方式是不同的)。比如上例子中没有显式声明和实现任何构造器,但 new A()和new B()等正确。比如在上面的class A中添加构造器: public A() {} public A(int notUseed) {} 后,在实例化b时仍然只能使用默认构造器B()
1. A class inherits all instance fields and instance methods (but not constructors) of its superclass. 2. The body of a class can always access all the fields and methods it declares itself. It can also access the accessible fields and members it inherits from its superclass.
jiangyiqun(我是一只猪) :hi》1. A class inherits all instance fields and instance methods (but not constructors) of its superclass. 继承时是否排除了静态成员?这就是我想问的:内存分配是可继承的标准吗?因为静态变量与实例变量不在一个内存空间。》2. The body of a class can always access all the fields and methods it declares itself. It can also access the accessible fields and members it inherits from its superclass. 对的。访问权限是可继承的标准吗?你的答案是no? 可能和我的想法一样,但觉得这个结论用于方法身上,显得特别的别扭,我好烦它。特别想法:语法是技术,技术问题只有一个答案;OO是思想,思想问题可以有多个答案。 大家的看法呢?
class A
{
private int getValue(){
return 0;
}
protected int getI()
{
return getValue();
}
}class B extends A
{
}
A a = new A();
System.out.print(a.getI()); //输出0
B b = new B();
System.out.print(b.getI()); //输出0因此几种资料说法不同,我认为是角度不一样。从类的内部构造来说,是完全继承的;如果从访问权角度来说,则不是的。
2、默认构造器(即不带任何参数的那个构造器)是可被继承的,其他构造器不能被继承(在这一点上,各种语言处理方式是不同的)。比如上例子中没有显式声明和实现任何构造器,但 new A()和new B()等正确。比如在上面的class A中添加构造器:
public A() {}
public A(int notUseed) {}
后,在实例化b时仍然只能使用默认构造器B()
"角度不一样"!和我的想法一样。我是这样说的:“这是一个十分微妙、理论性很强的主题。子类是否继承父类中private成员变量?从编程实用主义角度与从继承本质的角度出发,答案是不同的:
 实用主义者认为:子类仅仅继承其父类的所有可访问成员变量。
 理论主义者认为:子类继承其父类的所有成员变量,不论它们使用了什么样的访问修饰符,都会被子类继承。
(您可以采用任何一种观点,虽然我按照后一种观点介绍相关内容。)”从对象的内存构造来说,成员变量是完全继承的;但方法,特别的,private方法(默认为final)是静态绑定的,讨论其继承,有一些令人费解。所以,我感到不太好解释private变量、方法继承的问题。这可能涉及OO本身的理解了,封装时,域与方法是一体的,运行结构,域与方法还是分离的。构造器应该不存在继承问题。如果默认构造器能够被继承,则其他构造器没有不能被继承的道理。构造器只能被系统(JVM)自动调用。再说,构造器不是类的成员,初始化块也不是类的成员。
父类中的成员都被继承(还是单指变量),为什么呢?
继承时是否排除了静态成员?这就是我想问的:内存分配是可继承的标准吗?因为静态变量与实例变量不在一个内存空间。》2. The body of a class can always access all the fields and methods it declares itself. It can also access the accessible fields and members it inherits from its superclass.
对的。访问权限是可继承的标准吗?你的答案是no? 可能和我的想法一样,但觉得这个结论用于方法身上,显得特别的别扭,我好烦它。特别想法:语法是技术,技术问题只有一个答案;OO是思想,思想问题可以有多个答案。
大家的看法呢?