「java继承树」java 继承类
本篇文章给大家谈谈java继承树,以及java 继承类对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
java类的继承
你调用的print语句是父类中的print
其中this.b就是父类中的b
同理,this.c也就是父类中的c
而print打印的是父类中的a b c的值
你的确按照树上说的定义了一个与父类同名的变量a
但是你却没有用到这个字类中的a
所以还是打印1 2 3
明白??
Java中的单继承
Object又没说是任何类的直接父类
如果你写个类A,没有extends任何类,隐含就是继承Object
如果你A类继承自B,A就不extends Object了,但是你的B是extends Object的,所以A也继承自Object,是一个间接父类
java 继承,重写,重载
我来为楼主解答一下:
【继承】
【内容阐述】
继承是使用extends关键字使用继承关系,继承有两点好处,一是促进代码的重用,二是使用多态性访问,继承关系的判断
可以使用instanceof运算符来测试,楼主继承中知道以上就可以了。
【测试1】
Given:
1. class Plant{
2. String getName(){return "plant";}
3. Plant getType(){return this;}
4. }
5. class Flower extends Plant{
6. //insert code here
7. }
8. class Tulip extends Flower{}
在第六行插入以下那段代码能够通过编译,答案不唯一:
A Flower getType(){return this;}
B String getType(){return "ok";}
C Plant getType(){return this;}
D Tulip getType(){return new Tulip();}//答案在后面
============================================================
【方法的重写】
【阐述】
子类继承父类时,子类就有机会重写父类提供的方法(final方法除外),重写要注意:
1、参数表必须和被重写方法的参数列表完全一致;
2、返回类型要和被重写方法的返回类型或者其子类型一致;
3、访问级别限制符不能比被重写的方法强,可以比他弱;
4、重写方法不能抛出新的检查异常或者比被重写方法声明的检查异常更广泛的异常;
5、不能重写final,static的方法
6、重写就是正在实现一个继承的方法
【测试2】
Given:
public class Animal{
protected void eat(){}
}
以下为Animal的eat()方法的重写,请指出错误的重写方式并说出理由:
A private void eat(){}
B public void eat()throws IOException{}
C public void eat(){}
D public void eat(String str){}
E public String eat(){}
=================================================================
【方法重载】
【阐述】
重载方法允许在类中重新使用相同的方法名称,但具有不同的参数,注意以下几点:
1、被重载的方法必须改变参数列表;
2、被重载的方法可以改变返回类型;
3、被重载的方法可以改变访问修饰符;
4、被重载的方法可以声明新的或更广泛的异常;
5;方法能够在同一个类中或者在子类中被重载;
【测试3】
Given:
1. class Programmer{
2. Programmer debug(){return this;}
3. }
4. class MyProgrammer extends Programmer{
5. //insert code here
6. }
以下哪段代码插入第五行可以通过编译:
A Programmer debug(){return this;}
B MyProgrammer debug(){return this;}
C Object debug(){return this;}
D int debug(){return 1;}
E int debug(int x){return 1;}
F Object debug(int x){return this;}
===================================================================
【转型】
【阐述】
转型的过程是编译器通过继承树来判断的,向下转型是转型至更加具体的类,即把父类强制转换成子类的类型,那么这个时
候编译可以通过,但是运行时会出现一个java.lang.ClassCastException的异常,而向上转型是将子类类型转换为父类类型
,这样一点问题都没有,就像这么一句话:向下转型是“车是宝马”,向上转型是“宝马是车”,明显看出对于错。
【测试4】
Given:
1. class X{void do1(){}}
2. class Y extends X{void do2(){}}
3.
4. class Chrome{
5. public static void main(String[] args){
6. X x1 = new X();
7. X x2 = new Y();
8. Y y1 = new Y();
9. //insert code here
10. }
11. }
以下哪些插入第九行是正确的:
A x2.do2();
B (Y)x2.do2();
C ((Y)x2).do2();
D None;
=============================================================================
【答案】
1、ACD
2、ABDE
3、ABEF
4、C
希望我的回答对楼主有所帮助!
java抽象类位于继承树的抽象层是什么意思?
您好,提问者:
1、抽象类只是一个特殊的类,但是也具备类的特性。
2、如果这个类中有抽象方法,那么这个类必须定义为抽象类。
3、如果这个抽象类继承了别的抽象类,那么可以不覆盖抽象方法。
因为:这个抽象类也是抽象的,没办法实现方法体。
例如一下代码:
abstract class A{
abstract void add();
public void delete(){}
}
abstract class B extends A{
//继承了抽象A类,因为也是抽象的,可以不写抽象方法,当然也可以重写抽象方法(切记抽象方法是没有方法体的)
//abstract void add(); //也是没有问题的
abstract void getXX();
}
public class extends B{
//必须实现抽象方法
//继承了B,也就继承了A,A B方法都有,所以必须重写这两个抽象类的抽象方法
public void add(){}
public void delete(){}
public void getXX(){}
}
java继承树的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java 继承类、java继承树的信息别忘了在本站进行查找喔。