面向对象三大特征-继承

继承

类和类之间常见的关系

1:既然继承是描述类和类之间的关系,就需要先来了解类和类之间的常见关系

现实生活中的整体与部分

现实生活

1:学生   是人  
2:狗     是动物
3:球队 包含 球员 整体与部分的关系,部分可以删除和增加
4:笔记本包含 cpu 整体与部分的关系,部分不可以删除和增加
5:航母编队 包含(航母 护卫舰 驱逐舰 舰载机 核潜艇)

java中类与类之间的关系
java中的类关系

球员—->球队 整体与部分关系 has a 关系
学生—–>人 继承的关系 is a 关系

//球员类
class Player{

    int num; //编码

    String name;

    public Player(int num , String name){
        this.num = num;
        this.name = name;
    }

    public void run(){
        System.out.println(name+"开跑...");
    }
}


//球队类
class Team{

    String name;  //球队的名字

    Player p1;  //球员1

    Player p2;   //球员2

    Player p3;  //球员3

    public  Team(String name,Player p1,Player p2,Player p3){
        this.name = name;
        this.p1 = p1;
        this.p2 = p2;
        this.p3 = p3;
    }

    //开始比赛
    public void startGame(){
        System.out.println(name+"开赛啦!!");
    }
}


class Demo6 
{
    public static void main(String[] args) 
    {
        Player p1 = new Player(12,"梅西");
        Player p2 = new Player(7,"C罗");
        Player p3 = new Player(11,"内马尔");
        //球队
        Team t = new Team("恒大",p1,p2,p3);
        t.startGame();

        System.out.println("名字:"+ t.p2.name);
    }
}

例:假如你在某个公司工作,这个公司中的经理的待遇与普通员工的待遇存在着一些差异.不过,他们之间也存在着很多相同的地方,例如:他们都有自己的名字,编号,薪水.只是经理与员工的薪水存在这一定的差异,这种情况下我们就需要使用继承.
在Manager与Employee之间存在着明显is-a关系,每一个经理都是一名员工,is-a继承的一个明显的特征

class Manager extends Employee{
    //添加方法和域
}

例如:

1:描述一个学生类
    姓名年龄学号属性,学习的方法
2:描述一个工人类
    姓名年龄工号属性,工作的方法
3:描述一个人类
    姓名年龄属性,说话的方法。

发现学生类和人类天生有着联系,学生和工人都是人。所以人有的属性和行为学生和工人都会有。出现类代码重复

class Person {
    String name;
    int age;

    // 静态变量(类变量)对象和对象之间的代码重复使用静态变量
    static String country = "CN";

    Person() {

    }

    void speak() {
        System.out.println(name + ":哈哈,我是人!!!");
    }

}

// 让学生类和人类产生关系,发现学生is a 人,就可以使用继承
class Student {

    String name;
    int age;

    Student() {

    }

    void study() {
        System.out.println("姓名:" + name + "年纪:" + age + ":好好学习");
    }
}

class Worker {
    String name;
    int age;

    void work() {
        System.out.println(name + ":好好工作,好好挣钱。");
    }

}

class Demo1 {

    public static void main(String[] args) {
        Student s = new Student();
        s.name = "jack";
        s.age = 20;
        s.study();

        Worker w = new Worker();
        w.name = "rose";

        w.work();
    }
}

问题:

如果没有继承,出现类和类的关系无法描述
如果没有继承,类和类之间有关系会出现类和类的描述代码的重复。

继承的特点

1.描述类和类之间的关系
2.降低类和类之间的重复代码
3.降低对象和对象之间的代码重复使用静态变量
4.降低类和类之间的代码重复使用就继承

继承要注意的事项

扫描二维码关注公众号,回复: 1699424 查看本文章
1. 千万不要为了减少重复代码而去继承,只有真正存在着继承关系的时候才去继承。
2. 父类私有的成员不能被继承。
3. 父类的构造函数不能被继承。
4. 创建子类对象时默认会先调用父类无参的构造函数。

猜你喜欢

转载自blog.csdn.net/qq847540343/article/details/78234371