封装、继承、多态

封装、继承、多态是面向对象编程的三大基本特征

封装

封装是指把一个对象的信息(或者说字段)隐藏在对象内部,不允许外部对象直接访问对象的内部信息。然后可以提供一些可以被外界访问的方法来获取或者操作隐藏在内部的信息。
比如下面的这个 People 类,name、age、address都是私有的信息,其他人(对象)是无法直接获取的,只能通过 People 类提供的方法来获取对应的信息。同时呢有些私有的信息比如address就可以不提供对应的方法来让外界获取。

public class People {
    private String name;
    private int age;
    private String address;

    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;
    }
}

继承

允许一个子类继承父类,包过父类的属性、方法。
同时呢子类重写或扩写父类的属性和方法。
继承的好处:可以提高代码的重用,程序的可维护性
如下面这个例子:
Student 类继承了 People 类的属性(name、age)和方法(eat),同时还有自己的属性(school、class)和方法(study)。

class People {
    protected String name;
    protected int age;

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

class Student extends People {
    private String school;
    private String class;

    public void study() {
        System.out.println("在XX学校XX班级学习");
    }
}

多态

简单来说就是不通的对象可以对同一个行为做出表现,但是表现的结果不同。
具体来说,多态是指一个接口或父类的引用变量可以指向不同的实例对象(实现类或子类),并根据指向的实例对象调用相应的方法。

多态性主要分为两种类型:编译时多态和运行时多态。
编译时多态:也称为静态多态,主要表现为方法重载。方法重载是在同一个类中存在多个同名方法,但它们的参数列表不同(参数的数量、类型或顺序不同)。编译器根据方法签名(方法名和参数类型)来决定调用哪个方法。
运行时多态:也称为动态多态,主要表现为方法重写。方法重写是在继承关系中,子类重写父类的方法,以提供特定的实现。运行时多态是通过继承和接口实现的。当父类的引用指向子类的对象时,调用方法时会根据实际的对象类型来决定调用哪个方法。

多态性的好处包括代码的可扩展性和可维护性。它允许程序员编写更通用的代码,这些代码可以与各种类型的对象起工作,而不必为每种对象编写特定的代码。

例子:

public class Father {
    public void eat(){
        System.out.println("吃肉的");
    }
}

class Son extends Father {
    @Override
    public void eat() {
        System.out.println("吃荤素搭配的");
    }

    public static void main(String[] args) {
        Father father = new Son();
        father.eat();
    }
}

在这里插入图片描述

你可能感兴趣的:(基础,java)