探秘面向对象编程:封装、继承、多态的精髓与实践

简介: 探秘面向对象编程:封装、继承、多态的精髓与实践

面向对象(Object-Oriented)是一种编程范式,它将程序设计看作是一组对象的集合,每个对象都有自己的属性和行为,并且能够相互通信和交互。面向对象编程(OOP)是一种强大而灵活的编程方法,它将现实世界的概念映射到程序,思想:代码复用性好,扩展性好,维护性好,代码冗余低设计中,使得代码更加模块化、可维护和易扩展。

1.创建类

类中包含:

静态的【属性,成员变量】

动态的【行为,成员方法】

修饰词  class  类名  {
       //属性信息
       //行为信息
}
//学生类
public class Student{
       //属性信息
       String name;
       int age;
       //行为信息
       public viod study(){
            System.out.println("在学习....");
       }
}

2.使用类创建对象

类型【类名】 引用名称 = new 类名([参数]);
//对象
Student student = new Student();

3.通过对象访问类中的成员

属性:对象.属性名;

对属性进行赋值: 对象.属性名=值;

行为:对象.方法名();

student.name;
student.name = "zs";
student.study();

4.封装

封装是面向对象编程的一种重要特性,它是指将类的数据(属性、成员变量)和操作(方法、行为)组合成一个单一的单元,从而隐藏了实现细节,使得外部只能通过公共接口访问对象的数据和行为。在封装中,类内部的实现细节对外部是不可见的,而只有暴露的公共接口可以被访问。

1.实现封装的方式

使用访问修饰符

Java中的访问修饰符(public、private、protected等)可以控制成员变量和方法的访问权限。通常将成员变量声明为私有(private),并提供公共的访问方法(get和set)来访问和修改数据。

提供公共接口

类应该定义一组公共的方法作为外部访问点,这些方法对外暴露类的功能。私有的实现细节应该隐藏在类的内部。

数据封装

将相关的数据和行为打包在一个类中,使得数据和行为紧密联系在一起,同时封装数据的改变可能导致的行为变化。

示例代码:

public class Student{
     private String name;
     private int age;
    //get,set方法
    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 Student(String name, int age) {
        this.name = name;
        this.age = age;
    }
    //行为
    public void displayInfo() {
        System.out.println("Name: " + name);
        System.out.println("Age: " + age);
    }
    public static void main(String[] args) {
        //创建对象
        Student student = new Student("John", 20);
        // 使用get访问数据
        System.out.println("Name: " + student.getName());
        System.out.println("Age: " + student.getAge());
        // 使用set修改数据
        student.setAge(21);
        //调用方法
        student.displayInfo();
    }
}

2.优势

数据保护和安全性

通过封装,数据被隐藏在类的内部,不会被外部直接访问或修改。这种保护机制确保了数据的安全性,防止了意外或恶意的数据篡改。只有通过类的公共方法才能访问和修改数据,从而控制了数据的访问权限。

代码模块化

封装使得代码可以以模块化的方式组织。每个类都是一个独立的单元,负责处理自己的数据和行为。这种模块化使得代码更易于理解和维护,降低了代码的复杂性。

代码重用

封装提供了接口来访问类的功能,其他代码可以直接使用这些接口而不需要了解类的内部实现。这种高度抽象的接口使得代码的重用更加容易,减少了代码的冗余。

系统扩展性

通过封装,类的内部实现可以随时更改,而不会影响到外部代码。只要保持类的公共接口不变,其他代码不需要修改,从而提高了系统的扩展性和灵活性。

5.继承

继承是面向对象编程中的一个重要特性,它允许一个类(子类)从另一个类(父类)那里继承属性和方法。子类拥有父类的所有公共属性和方法,并且可以在此基础上添加新的属性和方法。通过继承,子类可以重用父类的代码,避免重复编写相同的功能。

1.实现继承的方式

关键字extends

Java和许多其他面向对象编程语言使用关键字extends来实现继承。子类通过extends关键字指定父类,从而继承父类的属性和方法。

单继承

Java中,一个类只能继承一个父类,这称为单继承。这样的设计避免了多重继承可能引发的歧义和复杂性。

多层继承

子类可以作为其他类的父类,形成多层继承关系。这种多层继承使得类的层次结构更加丰富。

示例代码:

// 父类Animal
public class Animal {
    public void sound() {
        System.out.println("动物发出声音");
    }
}
// 子类Dog继承自Animal
public class Dog extends Animal {
    @Override//重写方法标志
    public void sound() {
        System.out.println("汪汪汪");
    }
    public void wagTail() {
        System.out.println("摇尾巴");
    }
}
public class Main {
    public static void main(String[] args) {
        Dog dog = new Dog();
        // 调用继承自父类的方法
        dog.sound();
        // 调用子类自己添加的方法
        dog.wagTail();
    }
}

2.优势

代码复用

继承允许子类重用父类的代码,避免了重复编写相同功能的情况。子类可以直接使用父类的方法和属性,从而提高了代码的重用性和可维护性。

类层次的建立

通过继承,可以建立类的层次结构。在这种层次结构中,可以将共同特征的类归为同一个父类,形成一个类的层次结构。这种层次结构使得代码的组织更加清晰,提高了代码的可读性。

可扩展性

继承允许在现有类的基础上创建新的子类,可以在子类中添加新的属性和方法,从而实现类的扩展。这种可扩展性使得程序更加灵活,能够应对未来的需求变化。

6.多态

多态是指通过一个统一的接口来访问一组不同的对象。在多态中,子类可以在不改变父类接口的情况下,重写父类的方法,从而实现了不同的行为。多态允许我们将对象视为其父类类型,而在运行时根据实际对象类型来调用相应的方法。

1.实现多态的方式

方法重写

子类可以重写父类的方法,从而改变父类方法的行为。在运行时,会根据实际对象的类型来调用对应的方法。

父类引用指向子类对象

父类的引用可以指向子类的对象。通过父类引用,我们可以使用父类的方法,但在运行时实际上会调用子类的方法。

代码示例:

// 父类Animal
public class Animal {
    void sound() {
        System.out.println("动物发出声音");
    }
}
// 子类Dog继承自Animal
public class Dog extends Animal {
    @Override
    void sound() {
        System.out.println("汪汪汪");
    }
}
// 子类Cat继承自Animal
public class Cat extends Animal {
    @Override
    void sound() {
        System.out.println("喵喵喵");
    }
}
public class Main {
    public static void main(String[] args) {
        Animal dog = new Dog();
        Animal cat = new Cat();
        // 调用重写后的方法
        dog.sound();
        cat.sound();
    }
}

2.优势

代码灵活性

多态允许我们在运行时决定调用哪个方法,从而使代码更加灵活和适应不同的场景。通过多态,我们可以使用一个通用的接口来处理不同的对象,无需关心具体的对象类型。

代码可扩展性

多态使得代码更易于扩展和维护。当需要增加新的子类时,我们只需要添加新的子类并重写父类的方法,而无需修改现有代码。

代码可读性

多态可以使代码更加简洁和易读。通过使用统一的接口,我们可以隐藏对象的具体实现细节,从而使代码更加简洁和易于理解。

7.总结

面向对象编程的核心思想是将现实世界的实体映射到代码中,通过封装、继承和多态等特性实现代码的组织、重用和灵活性。合理地应用面向对象编程,可以提高代码的安全性、可读性和可维护性,是编写优秀、健壮的软件系统的关键要素。在实际开发中,熟练运用面向对象编程的原则和技巧,可以极大地提高开发效率和代码质量。

相关文章
|
6月前
|
Java 开发者
Java面向对象编程(OOP)的四个主要概念
【6月更文挑战第19天】Java OOP的基石是封装、抽象、继承和多态。封装是通过类隐藏数据细节;抽象简化复杂性,用接口和抽象类实现;继承让子类从父类继承属性和行为,促进代码重用;多态一个接口可有多种形态,分编译时和运行时。这些概念支持灵活且可扩展的软件设计。
51 1
|
7月前
|
Java
类与对象:Java面向对象编程的基石
类与对象:Java面向对象编程的基石
|
7月前
|
Java 数据安全/隐私保护
Java面向对象编程:封装技术详解
Java面向对象编程:封装技术详解
82 0
|
7月前
|
Serverless PHP
当谈论面向对象编程时,这四个概念是非常重要的。以下是对接口、继承、封装和多态的简要说明
本文介绍了面向对象编程的四个核心概念:接口、继承、封装和多态。接口定义对象的行为规范,类通过实现接口确保符合所需行为。继承允许在已有类基础上创建新类,实现代码重用。封装是将数据和操作捆绑并隐藏内部细节,提高安全性和可维护性。多态使对象在运行时能表现出不同行为,增加代码灵活性和可扩展性。文中还提供了代码示例来说明这些概念。
52 0
|
7月前
|
Java 数据安全/隐私保护 开发者
从零到一:深入理解Java中的封装、继承与多态
从零到一:深入理解Java中的封装、继承与多态
497 0
|
7月前
|
Java
Java面向对象编程,解释封装、继承和多态的概念。
Java面向对象编程,解释封装、继承和多态的概念。
82 2
|
设计模式 存储 安全
【Java设计模式 面向对象设计思想】一 再谈面向对象和封装、抽象、继承、多态四大特性
【Java设计模式 面向对象设计思想】一 再谈面向对象和封装、抽象、继承、多态四大特性
91 0
|
Java
Java面向对象基础2——封装
简单来说,封装就是正确地设计对象的属性。要注意的是,对象代表什么,就封装对应的数据,并提供数据的对应行为
107 0
Java面向对象基础2——封装
|
Java C++
Java开发——9.面向对象的特点(2.1):继承VS抽象
面向对象的特点:封装、继承和多态。
|
Java 编译器
java面向对象三大特性,多态篇
1.概述 多态是同一个行为具有多个不同表现形式或形态的能力。 多态就是同一个接口,使用不同的实例而执行不同操作,如图所示:
162 0
java面向对象三大特性,多态篇