Java面向对象的三大特征:封装,继承,多态。

一.封装

  1. 封装概述:是面向对象三大特征之一(封装,继承,多态) 是面向对象编程语言对客观世界的模拟,客观世界里成员变量都是隐藏在对象内部的,外界是无法直接操作的
  2. 封装原则:将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问 成员变量private,提供对应的getXxx()/setXxx()方法
  3. 封装好处:通过方法来控制成员变量的操作,提高了代码的安全性 把代码用方法进行封装,提高了代码的复用性

封装步骤:

1.用private修改属性的可见性来限制对属性的访问

2.提供方法get/set用来访问属性

3.在getter/setter方法中加入属性控制语句(用于判断属性值的合法性);

举例:


public class Test {
    /*
    将一个人的姓名,性别,年龄进行封装
    */
    private String name;
    private String sex;
    private int age;
    /*
    提供有参和无参的构造方法
     */

    public Test() {
    }

    public Test(String name, String sex, int age) {
        this.name = name;
        this.sex = sex;
        this.age = age;
    }
/*
提供获取方法
 */
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }


封装的缺点:

将变量等使用private修饰,或者封装进方法内,使其不能直接被访问,增加了访问步骤与难度。

二.继承

1. 继承含义:多个类具有共同的属性(成员变量)与行为(成员方法)的时候,将这些共同的部分抽取出来定义到一个公共的类中,其他及各类可以与这个公共的类形成继承关系,从而在多个类中不需要重 复定义公共部分!这个公共的类就是父类,也称为超类或者基类,其他的类就是子类。子类可以直接访问父类的非私有化成员变量,访问父类的私有化成员变量可以使用super.get()方法。

2.继承特点:

  1. Java中类只支持单继承,不支持多继承
  2. Java中类支持多层继承

3.继承的优点与弊端:

优点:

1.减少代码量,能很好的提高复用率。
2.使类与类之间存在继承关系,是实现多态操作的前提。 

弊端:继承让类与类之间产生了关系,类的耦合性增强了,当父类发生变化时子类实现也不得不跟着变化,削弱了子类的独立性。

4.适用场景:

使用继承,需要考虑类与类之间是否存在is..a的关系,不能盲目使用继承。

is..a的关系:谁是谁的一种,例如:老师和学生是人的一种,那人就是父类,学生和老师就是子类。

三.多态

1.含义:多态指的是对象的多种形态。

多态有两种:引用多态和方法多态。

2.多态存在的前提:

   1.必须有子类和父类,具有继承或实现(继承)

   2.子类必须重写父类的方法(重写)

   3.父类的引用变量指向子类的对象(向上转型)

3.多态的优点与弊端:

  • 好处
    提高程序的扩展性。定义方法时候,使用父类型作为参数,在使用的时候,使用具体的子类型参与操作
  • 弊端
    不能使用子类的特有成员

4.成员特点:

成员访问特点

  • 成员变量
    编译看父类,运行看父类
  • 成员方法
    编译看父类,运行看子类