面向对象的三大特征

1.是什么

        面向对象编程(OOP)的三大特征包括封装、继承和多态。下面我将通过具体的例子来详细解释这三个特征。


1. 封装(Encapsulation)

        封装是面向对象编程的核心思想之一,它指的是将对象的属性和行为封装成一个独立的单元,即。封装隐藏了对象的内部实现细节,仅对外提供有限的接口与外界进行交互。这样做的好处是可以提高数据的安全性,减少外部对对象内部状态的直接访问,从而避免了对内部数据的非法操作。

例子

        假设我们有一个Person类,代表一个人。这个类有两个私有属性:name(姓名)和age(年龄),以及两个公共方法:getName()(获取姓名)和setName(String name)(设置姓名)。通过封装,外部代码无法直接访问name属性,而只能通过getName()setName()方法来获取和设置姓名。这样就保护了name属性,防止了外部代码对其进行非法操作。

public class Person {  
    private String name;  
    private int age;  
  
    public String getName() {  
        return name;  
    }  
  
    public void setName(String name) {  
        this.name = name;  
    }  
  
    // 省略其他代码...  
}

2. 继承(Inheritance)

        继承是面向对象编程中实现代码复用的重要手段。它允许我们定义一个类(子类)来继承另一个类(父类)的属性和方法。子类可以继承父类的所有非私有成员(包括属性和方法),并可以添加自己的属性和方法或重写父类的方法。

例子

        假设我们有一个Animal类,代表动物,它有一个方法eat()表示吃东西。然后我们可以定义一个Dog类来继承Animal类,表示狗。Dog类继承了Animal类的eat()方法,并可以添加自己的方法,比如bark()表示叫。

public class Animal {  
    public void eat() {  
        System.out.println("This animal eats food.");  
    }  
}  
  
public class Dog extends Animal {  
    public void bark() {  
        System.out.println("Woof!");  
    }  
  
    // Dog类继承了Animal类的eat()方法,因此不需要重新定义它  
}

3. 多态(Polymorphism)

        多态是面向对象编程中一个非常重要的概念,它指的是同一操作作用于不同的对象,可以有不同的执行结果。多态性有两种形式:编译时多态性运行时多态性。运行时多态性主要通过方法的重写(Override)和接口的实现来实现。

例子

        假设我们有一个Shape接口,代表形状,它有一个方法draw()表示绘制。然后我们可以定义多个类来实现这个接口,比如Circle(圆形)和Rectangle(矩形)。每个类都有自己的draw()方法实现。当我们通过Shape类型的引用来调用draw()方法时,具体执行哪个类的draw()方法取决于该引用实际指向的对象类型,这就是多态性的体现。

public interface Shape {  
    void draw();  
}  
  
public class Circle implements Shape {  
    public void draw() {  
        System.out.println("Inside Circle::draw() method.");  
    }  
}  
  
public class Rectangle implements Shape {  
    public void draw() {  
        System.out.println("Inside Rectangle::draw() method.");  
    }  
}  
  
// 使用  
Shape s = new Circle();  
s.draw(); // 调用Circle的draw()方法  
  
s = new Rectangle();  
s.draw(); // 调用Rectangle的draw()方法

        在这个例子中,Shape类型的引用s可以指向Circle对象或Rectangle对象,并且在调用draw()方法时,会根据s实际指向的对象类型来执行相应类的draw()方法,这就是多态性的具体体现。


总结:

1. 封装
        为了提高代码的安全性,隐藏对象的内部细节,封装将对象的内部状态(字段、属性)隐藏起来,并通过定义公共的方法(接口)来操作对象,外部代码只需要知道如何使用这些方法而无需了解内部实现。
2. 继承
        允许⼀个类(子类)继承另⼀个类(父类)的属性和方法的机制。子类可以重用父类的代码,并且可以通过添加新的方法或修改(重写)已有的方法来扩展或改进功能,提高了代码的可重用性和可扩展性。
3. 多态
        多态是指相同的操作或方法可以在不同的对象上产生不同的行为,通过方法的重载和重写实现。多态允许以⼀致的方式处理不同类型的对象,提高了代码的灵活性。

      好啦,今天的干货就到这啦~    有什么疑问的小伙伴欢迎到评论区留言!


猜你感兴趣的方面:

#如何区分++i和i++???

#强制类型转换是什么?

#自动类型转换有哪些细节???
#JVM、JRE、JDK之间的关系
#彻底区分:基本数据类型、引用数据类型和包装类型
#成员变量、局部变量和静态变量的区别
#彻底弄清:原码、反码、补码
#值传递和引用传递的区别
#按位与(&)、按位或(|)、按位异或(^)、按位取反(~)

#面向对象和面向过程有什么区别

  • 25
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值