面向对象之类的三大特性之继承

继承:子类继承父类的的相关数据成员和成员方法。

当两个类中都有相同的属性的时候,就不用在两个类当中都定义相同的属性了,这样写同样的代码比较繁琐,我们就用到这个关键字extends

那么,接下来我们看个例子:

    public class Student {
private String name;
private char sex;
        private int age;
Student(){

}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public char getSex() {
return sex;
}
public void setSex(char sex) {
this.sex = sex;
}
public int getAge() {
return age;
}
       public void setAge(int age) {
if(age >0 && age <120) {
this.age = age;
}else {
System.out.println("年龄只能在0-120之间");
}
}
public void study() {
System.out.println("张三学习");
}

}

College类里面也要有那些相同的属性,姓名,性别,年龄,这时候,我们通过继承,College类叫做子类,Student类叫做父类,通过extends关键字后,就相当于在子类当中创建了一个父类的对象,子类中也就有了父类当中的那些方法,college也就有了姓名,性别,年龄这些属性,也拥有了zhuanye这个属性。

public class College extends Student{
private String zhuanye;


public String getZhuanye() {
return zhuanye;
}
public void setZhuanye(String zhuanye) {
this.zhuanye = zhuanye;
}
/**
* 重写父类的方法,super指针指向子类对象中的那个父类对象
*/
public void study() {
//super.study();
System.out.println("大学生工作是学习");
}

}

测试:

public void test1() {
College c = new College();
c.setName("张三");
c.setZhuanye("软件工程");
System.out.println("姓名 :" +c.getName()+ " 专业 : "+ c.getZhuanye());
c.study();

}

运行结果:

                       

解析:我们看到,我在子类College中也写了study()方法,但是输出不一样,这种叫做重写,即就是子类重写父类的方法,叫做覆盖,当这个方法写后,子类当中的Study()方法就把父类当中的方法覆盖住了,所以,测试出来的结果是College中的方法。

当然我也可以在子类当中加super()关键字后,那么我就会调用到父类当中的方法了,这样的测试结果为:

                   

super关键字呢我们后面再详细说,今天继承就说这么多。

猜你喜欢

转载自blog.csdn.net/goforitaaa/article/details/80800367