㈠ 关于java 的继承问题,子类会继承父类的哪些东西
和C++类似,可以继承基类的公共属性和方法。
在Java继承里,父类的属性还有方法在声明时,如果是public关键字即公共属性,则在子类继承时,这些属性和方法都会被子类继承。受保护的也可以继承
但是私有的类属性成员和方法则无法继承。
.子类继承父类的成员变量
当子类继承了某个类之后,便可以使用父类中的成员变量,但是并不是完全继承父类的所有成员变量。具体的原则如下:
1)能够继承父类的public和protected成员变量;不能够继承父类的private成员变量;
2)对于父类的包访问权限成员变量,如果子类和父类在同一个包下,则子类能够继承;否则,子类不能够继承;
3)对于子类可以继承的父类成员变量,如果在子类中出现了同名称的成员变量,则会发生隐藏现象,即子类的成员变量会屏蔽掉父类的同名成员变量。如果要在子类中访问父类中同名成员变量,需要使用super关键字来进行引用。
2.子类继承父类的方法
同样地,子类也并不是完全继承父类的所有方法。
1)能够继承父类的public和protected成员方法;不能够继承父类的private成员方法;
2)对于父类的包访问权限成员方法,如果子类和父类在同一个包下,则子类能够继承;否则,子类不能够继承;
3)对于子类可以继承的父类成员方法,如果在子类中出现了同名称的成员方法,则称为覆盖,即子类的成员方法会覆盖掉父类的同名成员方法。如果要在子类中访问父类中同名成员方法,需要使用super关键字来进行引用。
㈡ Java 子类继承父类,子类重写父类方法,这种情况下父类可以获取到子类的数据吗
在父类中能获取子类的属性吗?一般情况下是不行的,因为孩子尚未出世哪里来的属性。但有时需要在父类处理该类(包含子类)的所有属性,该怎么做呢,有种方法能解决——在父类中将子类的实例引用进来。假设BaseClass是基类,有个getAll方法用以获取该类的所有属性。SubClass继承子BaseClass,SSClass继承自SubClass,SSClass的实例调用getAll方法时获取SSClass及其父类的所有属性。具体做法如下:
import java.lang.reflect.Field;
public class BaseClass {
private String a;
private int b;
// public BaseClass() {
// bc = setBC();
// }
private final BaseClass bc = setBC();
private BaseClass setBC() {
return this;
}
public void getAll() {
Class clazz = this.bc.getClass();
do {
Field[] fields = clazz.getDeclaredFields();
for (Field f : fields) {
System.out.println(f.getName());
}
clazz = clazz.getSuperclass();
} while (clazz != Object.class);
}
}
这里BaseClass bc就是子类的引用,构造子类SubClass或SSClass实例时,调用setBC方法将子类的引用获得。setBC中return this这里的this是子类的实例,不是父类的。setBC也可以在父类构造函数中调用,效果是一样的,如上面代码的注释块。
子类就不用关心任何事了,不管它是否有自己的构造方法:
public class SubClass extends BaseClass {
@ShareObject
private boolean c;
}
public class SSClass extends SubClass {
private String ss;
public SSClass(int i) {
ss = "";
}
}
测试:
@Test public void get() {
SSClass sc = new SSClass(1);
sc.getAll();
}
输出内容:
ss
c
a
b
bc
㈢ Java 子类一旦继承父类后,子类的所有对象也都成为父类的对象了
子类的对象实例都可以用父类的变量去引用。具体来说,假设Son类继承了Father类。则可以有:
FatherobjRef=newSon(...);
SonsonRef=(Son)objRef;
我们用new关键字建造了一个新的Son类对象实例,然后用一个Father类的引用去指向它;这时我们透过objRef这个引用,看到的就好像是一个Father类对象,只能使用Father类有的方法和属性。当然, 因为objRef指向的其实是一个Son类实例,因此可以借助强制类型转换将一个Son类的引用去指向它,然后就可以使用Son类独有的方法和属性了。
㈣ Java中子类继承父类到底是不是相当于直接复制父类的代码,请各位高人务必慎重回答,免得小弟误解
老爹将毕生所学的技能传授于儿子,儿子在“继承”到了,便可以使用了。儿子所使用的技能是他自己从他老子那里学来的,不是他老子的。有时候,老爹觉得有些技能“不好”或者是儿子目前所不需要的,那么不打算把这些技能传授于儿子(private)。因此,儿子是不会知道如何使用这些技能的。不过,儿子有时候也会觉得老子某些技能不好用,然后加以改进(覆盖)。当然,儿子没准也会自创一些技能,这些技能是他老子都不会的。
㈤ 关于java继承的描述错误的是
关于Java继承的描述中可能存在的错误信息包括:
为了更好地理解这些概念,我们可以使用Java中的示例代码来说明。例如,假设我们有一个父类Animal和一个子类Dog,Dog继承了Animal的所有公有和受保护方法,并可以选择性地覆盖它们。这样,我们就可以创建Dog对象并使用它们的方法,同时保留Animal类的所有公共和受保护成员。
以下是一个示例代码:
class Animal { public void eat() { System.out.println("Animal is eating"); } } class Dog extends Animal { @Override public void eat() { System.out.println("Dog is eating"); super.eat(); // 调用父类的eat方法 } }
在这个例子中,Dog类继承了Animal类的eat方法并提供了自己的实现,但还调用了父类的eat方法以保留Animal类的功能。这些都是Java继承的基本原理和特性。
总的来说,Java继承提供了一种强大的机制,使得我们可以将代码组织成层次结构,并使代码更加清晰和可维护。
㈥ 在java中子类若要继承父类,需要使用的关键字是什么
关键字是extends,
语法结构:[修饰符] class <子类类名> <父类类名>{
·····//类体定义
}
super 是用来指明调用的内是父类方法或指明操作的容是父类的属性,而不是被子类覆盖的成员方法或被子类隐藏的属性。
this代表的是当前对象自身。
接口的定义的关键字是interface。实现的关键字是implements
㈦ JAVA中,子类将继承父类的所有属性和方法么~为什么
是的来,子类将继承父类的非私有的自属性和方法。
在JAVA中,子类继承父类的所有方法和属性(构造方法要用关键super([参数])调用);继承是JAVA中一个重要的特色,便于程序的编写,提高代码的重用性。
1、如果给子类i提供get和set 通过get调用的自然是子类的。
2、如果给父类和子类分别提供get和set,调的仍然是子类的,因为方法被重写。
(7)java继承父类子类扩展阅读
在继承中用到super调用父类的构造
private String name;
private String sex;
public xinxin1(String name,String sex)
{
this.name=name;
this.sex=sex;
}
public void hello(){
System.out.println(“嗨!我是”+name+”我是”+sex+”孩”);
}