java面向对象三大特性 --- 封装 继承 多态

封装 继承 多态

  • 面向对象三大特性
    • 1. 封装
    • 2. 继承(重写)

面向对象三大特性

1. 封装

封装就是将描述一个类的属性和行为的代码封装在一个模块中。
这样做的好处:
提高了代码的复用性
增加了代码的安全性
高内聚 低耦合
对象封装之后,外界只有通过对象的共有方法去得到对象的数据。

我们通过示例进行分析:
未封装时:

public class EncapsDemo {
     

    String name;
    int age;

    public void getInfo() {
     
        System.out.println("name: " + name + ", age: " + age);
    }
}

测试代码如下:

public class EncapsDemoTest {
     

    public static void main(String[] args) {
     
        EncapsDemo encapsDemo = new EncapsDemo();

        encapsDemo.name = "李四";
        encapsDemo.age = 1000;

        encapsDemo.getInfo();
    }
}

输出结果:
name: 李四, age: 1000
我们可以看到,没有使用封装,任何人都可以进行复制,信息不安全

当我们使用封装:

public class EncapsDemo1 {
     

    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) {
     
        if (age >= 0 && age <= 130) {
     
            this.age = age;
        } else {
     
            System.out.println("age输入异常!!!,age范围为0到130");
        }

    }

    public void getInfo() {
     
        System.out.println("name: " + this.getName() + ", age: " + this.getAge());
    }
}

测试代码:

public class EncapsDemo1Test {
     

    public static void main(String[] args) {
     

        EncapsDemo1 encapsDemo1 = new EncapsDemo1();

        encapsDemo1.setName("李四");
        encapsDemo1.setAge(1000);

        encapsDemo1.getInfo();
    }
}

输出结果:
age输入异常!!!,age范围为0到130
name: 李四, age: 0
可以看出:

  • private 修饰的成员在自己所在的类可以使用,在类外不可以,只可以通过set/get去调用属性
  • 在set方法内可以加入逻辑判断,过滤掉非法的数据

2. 继承(重写)

子类继承父类,使用“ extends ”

格式:
class 子类 extends 父类{}
当子类继承父类时,会自动拥有父类可以被继承的成员

继承的好处:

  • 提高了代码的复用性
  • 提供了多态的前提

示例如下:
创建一个父类,一个子类

package com.oracle.demo03;
//员工类(父类)
public class employee {
     
        String name;
        public void speak(){
     
            System.out.println("员工正在工作");
        }
}
package com.oracle.demo03;
//研发类员工(子类)
//子类继承父类:自动拥有所有可继承的成员
public class developer extends employee {
     
    
}

再创建一个测试类

package com.oracle.demo03;

public class test {
     

    public static void main(String[] args) {
     
        developer d= new developer();
        d.name = "zhangsan";
        d.speak();
        System.out.println(d.name);

    }

}

输出结果如下:java面向对象三大特性 --- 封装 继承 多态_第1张图片

你可能感兴趣的:(java)