面向对象的三大基本特征

面向对象的三大特征是封装继承多态

封装

封装指的是将某些信息隐藏在类的内部,不允许外部程序直接访问,但是可以通过该类提供的公有方法,来实现对隐藏信息的操作和访问。
举个例子,就比如一台手机,内部非常复杂的,一般用户不需要了解它的内部,手机厂商把手机封装起来,对外提供了一些“公有方法”——显示屏、按键、耳机孔等,从而用户就可以很方便的使用手机。

上代码:

public class Dog {
    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;
    }
}

这是一个狗狗类nameage都是private,意思就是说除了Dog类本身外,其他任何类都不可以访问这些属性(见Java访问权限),但是这边提供了public的get()set()的方法,可以通过set()方法来对其进行赋值,get()方法来对其进行取值。this是来引用成员变量(见成员变量和局部变量

public class MyDog {
    public static void main(String[] args) {
        Dog erha = new Dog();

        erha.setName("二哈");
        erha.setAge(2);

        System.out.println("名字:" + erha.getName());
        System.out.println("年龄:" + erha.getAge());
    }
}

然后在一个新的类中,new出了一个erha来,利用set()方法来给erha取名叫“二哈”,同时也设置了年龄为“2”,再往下使用了get()方法来获取到了erha的名字和年龄。全程都没有直接使用nameage来赋值取值,而是使用他提供的公有方法get()set()
运行MyDog输出结果:

名字:二哈
年龄:2

继承

继承可以直接获得父类的属性和方法并进行扩展,从而产生新的类。已经存在的类称为父类,而新的类称为子类。

上代码:

public class Husky extends Dog {
    public void destroy() {
        System.out.println("我喜欢拆家");
    }
}

新建一个哈士奇类,哈士奇也是狗狗,所以继承Dog类。哈士奇喜欢拆家,再给他定义个destroy方法。

public class MyDog2 {
    public static void main(String[] args) {
        Husky erha2 = new Husky();
        erha2.setName("小二哈");
        System.out.println("我叫" + erha2.getName());
        erha2.destroy();
    }
}

然后在一个新的类中,new出了一个erha2来。注意这一次类名不是Dog, 而是Husky,这样做就是使得这个erha2不仅可以使用Dog父类的属性和方法,还可以使用Husky子类自己的属性和方法。所以运行MyDog2输出结果:

我叫小二哈
我喜欢拆家

多态

多态是指在父类被子类继承之后,不同子类执行同一操作,可以有不同的解释,产生不同的执行结果。
详情可参考:再来个小记,Java方法重写(Method Overriding)

原文地址:https://www.cnblogs.com/Subaru/p/15509339.html