美文网首页
Java基础学习(六)- 面向对象(下)

Java基础学习(六)- 面向对象(下)

作者: 做个合格的大厂程序员 | 来源:发表于2020-05-17 20:06 被阅读0次

继承

概述

  • 多个类存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只要继承那个类即可。
  • 通过extends关键字可以实现类与类的继承。
  • 单独这个类成为父类,基类或者超类,多个类可以成为子类或者派生类。
  • 有了继承之后,我们定义一个类的时候。可以在一个已经存在类的基础上,还可以定义新的成员。

格式

public class 子类 extends 父类(){}

继承的优点

  • 提高了代码的复用性
  • 提高了代码的维护性
  • 让类与类之间产生了联系,是多台的前提

继承的缺点

  • 让类与类产生了关系,类之间的耦合性增强,违背了开发原则,即高内聚,低耦合

代码示例
Person类

public class Person {

    private String name;
    private 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 Person() {
    }

    public void study(){
        System.out.println("学习");
    }

    public void eat(){
        System.out.println("吃饭");
    }
}

Students类

public class Students extends Person{
    public Students() {
    }

    @Override
    public void study() {
        super.study();
        System.out.println("学生学习");
    }

    @Override
    public void eat() {
        super.eat();
        System.out.println("学生吃饭");
    }
}

Teachers类

public class Teachers extends Person{
    public Teachers() {
    }

    @Override
    public void study() {
        super.study();
        System.out.println("老师学习");
    }

    @Override
    public void eat() {
        super.eat();
        System.out.println("老师吃饭");
    }
}

继承中成员变量的特点

在子类方法中访问一个变量

  • 首先在子类局部范围找
  • 然后在子类成员范围找
  • 最后在父类成员范围找
  • 如果还没有找到就会报错

super和this

this
代表本类对象的引用

super
代表父类的存储空间。父类对象的引用。

用法

  • 访问成员变量:
    • this.成员变量
    • super.成员变量
  • 访问构造方法:
    • this(...)
    • super(...)
  • 访问成员方法:
    • this.成员方法()
    • super.成员方法()

方法重写

  • 父类私有方法不能重写
  • 子类重写父类方法时,访问权限不能更低。子类重写父类方法时,建议访问权限一模一样。

多态

定义
某一个事物,在不同时刻表现出来的不同状态

前提和体现

  • 有继承关系
  • 有方法重写
  • 有父类引用指向子类对象

代码示例

Animal类

public class Animal {
    public void eat(){
        System.out.println("动物吃");
    }
}

Cat类

public class Cat extends Animal{
    public void eat(){
        System.out.println("猫吃");
    }
}

Test类

public class Test {
    public static void main(String[] args) {
        Animal a = new Cat();
        a.eat();
    }
}

相关文章

网友评论

      本文标题:Java基础学习(六)- 面向对象(下)

      本文链接:https://www.haomeiwen.com/subject/fhxeohtx.html