继承与派生
作者:互联网
#继承与派生
##Java中的继承与派生
继承:一个子类,拥有父类所有的属性和方法,并且可以在这个基础上添加独有的属性和新的方法。
关键字:extends
要点:Java中的继承是单继承,一个子类只能有一个父类。在Java中可以多继承的是接口,关键字是implements。
程序举例:
下面展示一些 内联代码片
。
public class student()//父类,学生类
{ public static void main(String[] args) {
unstudent xw=new unstudent();
xw.setName("小毋");
xw.study();
xw.setMajor("化学");
xw.show();
}
public int num;
public String name;
public void setName(String n){
name = n;}
public String getName(){
return name;}
public void study(){
System.out.println(name+"正在学习!");
}
}
public class unstudent extends student()//派生类,大学生类
{
public String major;
public void setMajor(String n){
major=n;}
public String getMajor(){
return major;}
public void show(){
System.out.println("学习的是"+major); }
}
运行完以后结果如下:
小毋正在学习!
学习的是化学
可以发现子类unstudent的对象可以调用父类中的方法,也可以调用自己新定义的方法。
继承可以在有很多类具有相同属性时简化代码。比如学生管理系统有小学生初中生高中生等,具有学生的共同属性,那么这些类可以由一个学生类继承而来。
需要注意的是在集成时父类的函数如果为private类型,那么子类不能调用这个方法。可以写成protected类型。
虽然继承只能单继承,但是也可以和接口连用,要注意的是必须把继承写在前面。
比如:继承和接口是可以联用的
package wkx210127;
import javax.swing.event.MenuEvent;
import javax.swing.event.MenuListener;
public class unstudent extends student implements MenuListener{
public String major;
public void setMajor(String n){
major=n;}
public String getMajor(){
return major;}
public void show(){
System.out.println("学习的是"+major); }
public void menuSelected(MenuEvent e){};
public void menuDeselected(MenuEvent e){};
public void menuCanceled(MenuEvent e){};
}
##方法的重写
这个和C++中的函数重载很类似,就是在新的类中将父类曾经有的方法重新写,重写的方法会覆盖在子类继承父类的方法上。
需要注意的是在方法重写时方法的参数个数,参数类型以及方法类型都不能改变,但是可以越来越开放。
例子:
package wkx210127;
public class unstudent extends student {
public String major;
public void setMajor(String n){
major=n;}
public String getMajor(){
return major;}
public void show(){
System.out.println("学习的是"+major); }
public void study(){
System.out.println(name+"正在玩!");
}
}
重新运行这个方法(函数)会发现结果为:
小毋正在玩
说明这个对象xw调用的是重写的方法。
##类型的转换
###向上转换
public static void main(String[] args) {
student xw=new unstudent();
xw.setName("小毋");
xw.study();
}
将主函数改成以上内容,可以将子类的类型变为父类,当然,也要注意,如果在子类中重写了父类的方法,那么调用时会调用子类的方法。
因为在Java中如果一个方法有一个父类的属性,那么也可以是子类的属性。
例子:
//定义一个新的teacher类
public class teacher {
public void teach(student s){
s.study();}
}
同时修改一下主函数
public static void main(String[] args) {
unstudent xw=new unstudent();
xw.setName("小毋");
teacher xx=new teacher();
xx.teach(xw);
}
发现运行结果为:
小毋正在学习
###强制类型转换(向下转换)
unstudent unst = (unstudent)xw;
定义出一个新的unstudent类的对象,将student类的xw强制转化为了unstudent类。
大概就是这样了。
(新人,非科班,如有错误,欢迎指正)
标签:major,String,派生,继承,void,public,unstudent,xw 来源: https://blog.csdn.net/weixin_52039394/article/details/113241554