
举个例子:
父类:A
子类:A1
子类:A2
父类中定义了一个方法method:,类A1和类A2有不同的实现,这是代码中定义一个类A,那么可以直接调用A的a方法即可,不用关心用A1还是A2去实例化的这个A对象,这就是多态的特性
A a;
a = new A1();或a = new A2();
amethod();只要改变这个a的实例化方式,就能执行不同对象的方法。
父类的私有属性和方法是不被子类继承调用的,如果你非要这么做可以
1、在父类中另外定义protected 的方法 *** 作私有方法,子类调用该方法
2、将私有方法改为protected
3、使用反射,获取父类所有方法,根据名称调用
把这个方法写在基类
public void getFields() {Class<> cls = getClass();
for (; cls != Objectclass; cls = clsgetSuperclass()) {
Field[] fs = clsgetDeclaredFields();
for (Field f : fs) {
Systemoutprintln(fgetName());
}
}
}
是的,子类将继承父类的非私有的属性和方法。
在JAVA中,子类继承父类的所有方法和属性(构造方法要用关键super([参数])调用);继承是JAVA中一个重要的特色,便于程序的编写,提高代码的重用性。
1、如果给子类i提供get和set 通过get调用的自然是子类的。
2、如果给父类和子类分别提供get和set,调的仍然是子类的,因为方法被重写。
扩展资料
在继承中用到super调用父类的构造
private String name;
private String sex;
public xinxin1(String name,String sex)
{
thisname=name;
thissex=sex;
}
public void hello(){
Systemoutprintln(“嗨!我是”+name+”我是”+sex+”孩”);
}
面向对象的三大特征之一封装,private了某个成员那么就必须对外创建一个对外访问接口,setXX()和getXX,否则本类中都没有办法访问。既
然对外创建了访问接口,那么某个类继承了它之后肯定自身也具备了该属性或者方法,所以肯定继承了。换言之,父类的属性和方法都是从子类身上抽取的,如果子
类继承了父类都没法具备父类的功能的话,继承就毫无意义了。
或者有可能是这样的:父类中的属性和方法不能私有。因为我确实没印像看到过父类中的成员是私有的。
你的这个问题就是关如多态的,是java里面最核心的机制
子类重写了父类方法的话,不管怎么样子类都会去调用它自己的那个方法,即父类引用指向子类对象时,这个对象变量调用的是其子类的方法(除非两个方法都是static的),其属性的话不管怎么样调用的总是父类的属性。
以上就是关于java 子类继承父类 可以直接调用父类属性和方法 为什么还要用多态全部的内容,包括:java 子类继承父类 可以直接调用父类属性和方法 为什么还要用多态、JAVA中重写父类方法后,这个方法如何调用父类私有属性方法、java中如何获取类的属性等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)