java基础

java中继承

2019-02-17  本文已影响0人  小漫画ing
package cn.manman.com;
class Student {
    String name;
    int age;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public void eat(){
        System.out.println("吃饭");
    }
}
class Teacher{
    String name;
    int age;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public void eat(){
        System.out.println("吃饭");
    }
}

通过观察上一段代码,我们发现代码的复用性很低,无论你的职位是什么,只要是人,都得吃饭,那么是不是老师可以利用学生的特征,提高代码的复用性呢?

package cn.manman.com;

public class person {
    String name;
    int age;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public void eat(){
        System.out.println("吃饭");
    }
}

首先我写了一个person类,不管你的职业是什么,都要吃饭,所以给了一个吃饭的方法。

package cn.manman.com;

public class Student  {
    public static void main(String[] args) {
        stu s=new stu();
        s.eat();
        s.study();
    }
}
class stu extends person{
    public void study(){
        System.out.println("学习");
    }
}

然后我接着写了一个学生类,学生在上面基本类的基础之上,还要学习,我利用java里面的继承,这样吃饭的代码就不用再次出现,这样就提高了代码的复用性,无论要写一个工人类还是老师类,都可以继承我的person类。


结果

继承的好处和弊端

继承的特点

继承的注意事项

package cn.manman.com;

public class jicheng {
    public static void main(String[] args) {
        Son son=new Son();
        son.show();
        //son.method();//不可以继承
    }
}
class Father{
    private int num=10;
    public int num1=20;
    private void method(){
        System.out.println(num);
        System.out.println(num1);
    };
    public void show(){
        System.out.println(num);
        System.out.println(num1);
    };
}
class Son extends Father{
    
}

子类不可以继承私有的方法;

继承中成员变量的关系

通过前面的学习,我们知道类的组成是:成员变量,构造方法,成员方法;但是我们现在学习了继承,我们来思考一下,类的组成部分的各自关系是什么?

package cn.manman.com;
//继承中成员变量的关系
public class leiguanxi {
    public static void main(String[] args) {
        Son1 son=new Son1();
        son.show();
    }
}
class Father1{
    public int num=10;
}
class Son1 extends Father1{
    public int num=40;
    public int num2=20;
    public void show(){
        System.out.println(num);
        System.out.println(num2);
    }
}

接下来看,我想输出局部范围和成员范围的num,我们可以通过使用关键字this

package cn.manman.com;
//要求是:不仅要输出局部范围的num,还要输出成员变量num
public class leiguanxi {
    public static void main(String[] args) {
        Son1 son=new Son1();
        son.show();
    }
}
class Father1{
    public int num=10; 
}
class Son1 extends Father1{
    public int num=40;
    public void show(){
        int num=20;
        System.out.println(num);
        System.out.println(this.num);//this就代表的是成员变量的num
    }
}
结果

如果我还想在子类中输出父类的变量,可以使用关键字super

package cn.manman.com;
//要求是:不仅要输出局部范围的num,还要输出成员变量num
public class leiguanxi {
    public static void main(String[] args) {
        Son1 son=new Son1();
        son.show();
    }
}
class Father1{
    public int num=10; 
}
class Son1 extends Father1{
    public int num=40;
    public void show(){
        int num=20;
        System.out.println(num);
        System.out.println(this.num);//this就代表的是成员变量的num
        System.out.println(super.num);//super就是代表父类变量的num
    }
}
结果
上一篇 下一篇

猜你喜欢

热点阅读