「java继承注意」java继承的规则
本篇文章给大家谈谈java继承注意,以及java继承的规则对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、java 中的继承的 优点和缺点 主要是缺点
- 2、JAVA哪种类不可以被继承?
- 3、java中函数的继承应该注意一些什么?
- 4、Java的继承和方法重写都需要注意什么?哪些地方容易错?
- 5、java 继承,重写,重载
java 中的继承的 优点和缺点 主要是缺点
java
中的继承的
优点和缺点如下:
优点:1.可以使用父类的所有非私有方法;而且单继承可由接口来弥补。
2.可以继承父类中定义的成员方法以及成员变量,使得子类可以减少代码的书写。还可以重写父类的方法以增加子类的功能。
缺点:1.耦合性太大
2.就是破坏了类的封装性,其实继承一般多用于抽象方法的继承和接口的实现
JAVA哪种类不可以被继承?
JAVA中被 final 标志的类,是最终类,不可以被继承,如:public 、final 、String。
JAVA继承的介绍
继承是面向对象最显著的一个特性,继承是从已有的类中派生出新的类,新的类能吸收已有类的数据属性和行为,并能扩展新的能力。
Java继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以增加新的数据或新的功能,也可以用父类的功能,但不能选择性地继承父类。
这种技术使得复用以前的代码非常容易,能够大大缩短开发周期,降低开发费用。比如可以先定义一个类叫车,车有以下属性:车体大小,颜色,方向盘,轮胎,而又由车这个类派生出轿车和卡车两个类,为轿车添加一个小后备箱,而为卡车添加一个大货箱。
java中函数的继承应该注意一些什么?
子类中就是继承父类里的变量和方法(注意:是不是真的能继承,还看父类变量和方法的访问修饰符是什么,例如private修饰的变量和方法就不能继承)
父类的构造凼数没有被继承,这里所说的意思是指在实例化子类的对象时,在new后面不能调用父类的构造凼数,但是可以在子类的构造凼数里使用super来调用父类的构造凼数,如果没有写super这句调用,子类会自动调用父类无参的构造凼数
可以new一个子类的对象赋给一个父类的变量,当通过这个父类的变量执行方法时,其实是执行的子类的方法
Java的继承和方法重写都需要注意什么?哪些地方容易错?
继承注意实现所有的抽象类 私有或静态成员 构造函数 不能继承 继承实现或重写父类方法不能 缩小父类访问符 冲写方法注意参数 函数 返回值不能错 等等 还有其他注意的地方 得自己练习
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继承注意和java继承的规则的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
发布于:2022-12-26,除非注明,否则均为
原创文章,转载请注明出处。