黑马程序员技术交流社区

标题: 关于子类父类的问题 [打印本页]

作者: 你懂得    时间: 2013-8-23 21:03
标题: 关于子类父类的问题
本帖最后由 forward 于 2013-8-24 20:22 编辑

子类可不可以直接访问父类的父类?如果可以的话,那要怎样访问?

作者: 小冰块    时间: 2013-8-23 21:46
可以访问,因为无论继承了多少代,父辈的数据和方法都会留给子辈。
  1. package exercise;

  2. class Grandpa{
  3.         public static String name="GradeFa";
  4.         public static void syso(){
  5.                 System.out.println("yo~i'm your GradeFa");
  6.         }
  7. }

  8. class Dady extends Grandpa{
  9.         public static int age = 40;
  10. }

  11. public class ExtendsTest extends Dady{

  12.         public static void main(String[] args) {
  13.                 System.out.println(name);
  14.                 System.out.println(age);
  15.                 syso();
  16.         }
  17. }
复制代码
输出:
GradeFa
40
yo~i'm your GradeFa
作者: 乖睡觉咯    时间: 2013-8-23 21:53
1
子类可以访问父类中的非私有的属性或者行为
2
子类不可以访问父类中的私有的属性或者行为
3
Java支持多层继承(继承体系)
class A{}
class B extends A{}
class C extends B{}
作者: 张云飞    时间: 2013-8-23 21:54
本帖最后由 张云飞 于 2013-8-23 21:56 编辑

如果你非要这么设计到话,可以使用 new 类名().方法()   :
  1. class A{
  2.          void showA(){
  3.                    System.out.println("AAAA");
  4.          }
  5. }
  6. class B extends A{
  7.          void showB(){
  8.                   System.out.println("BBBB");
  9.           }
  10. }
  11. class C extends B{
  12.           void showC(){
  13.                   new A().showA();
  14.          }
  15. }
  16. public class Test{
  17.         public static void main(String args[]){
  18.                 new C().showC();
  19.         }
  20. }
复制代码
但是这样似乎不太符合面向对象。

作者: l396262632    时间: 2013-8-23 22:15
可以,你子类怎么访问父类,就可以子类访问父父类。
作者: litaojisuanji    时间: 2013-8-23 22:41
  1. class grandFather
  2. {   
  3.         String gF="爷爷";
  4.         void showGF()
  5.         {
  6.                 System.out.println(gF);
  7.         }
  8. }
  9. class father extends grandFather
  10. {   
  11.         String F="爸爸";
  12.         void showF()
  13.         {
  14.                 System.out.println(F);
  15.         }
  16. }
  17. class me extends father
  18. {
  19.         String M="我";
  20.         void showM()
  21.         {
  22.                 System.out.println(M);
  23.         }
  24. }
  25. public class Demo
  26. {
  27.     public static void main(String[] args)
  28.     {
  29.          me m =new me();
  30.          m.showM();
  31.          m.showF();
  32.          m.showGF();
  33.     }
  34. }
复制代码
如果父类的父类没有被覆盖和私有的化,子类的子类都会继承下来,只要直接调用即可。
作者: 穿靴子的猫    时间: 2013-8-23 22:45
只要是一路继承过来的就没有问题
比如class Student extends Person
Student可以访问Person公开的属性跟方法
而我们的Person类呢?他虽然没有extends关键字 但他却隐式继承Object
所以你在使用Student的时候一样可以使用toString() ; equals()等方法
如果我现在class one extends two
class two extend three
one还是会一路向上找 直到找到最大父类Object
作者: meng    时间: 2013-8-24 16:49
当然可以!
作者: 楞个里格朗    时间: 2013-8-24 18:19
举个形象的例子,男生可以继承学生这个类的方法,而学生可以继承人的方法。所以男生也可以继承人的基本方法,调用方法还是:子类名.父类方法();
作者: 杨增坤    时间: 2013-8-24 20:10
如果问题解决了,请把问题的未解决更改为已解决
谢谢合作!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2