Java基础 - 面向对象

举报
yd_262576869 发表于 2024/04/13 17:09:04 2024/04/13
【摘要】 本文主要介绍 Java 面向对象基础相关知识 Java基础 - 面向对象Java是一种面向对象语言,这意味着它的设计和开发都基于对象和类的概念。那么什么是面向对象?面向对象的三大特征又是什么呢? 面向对象概述  在程序开发的初期,人们使用结构化开发语言,但是随着软件规模越来越大,开发周期越来越长 ,产品的质量也不尽如人意。这时候,程序员提出了面向对象的思想。面向对象思想是人类最自然的一种思考...

本文主要介绍 Java 面向对象基础相关知识

Java基础 - 面向对象

Java是一种面向对象语言,这意味着它的设计和开发都基于对象和类的概念。
那么什么是面向对象?面向对象的三大特征又是什么呢?

面向对象概述

  在程序开发的初期,人们使用结构化开发语言,但是随着软件规模越来越大,开发周期越来越长 ,产品的质量也不尽如人意。这时候,程序员提出了面向对象的思想。面向对象思想是人类最自然的一种思考方式,他将所有预处理的问题抽象为对象,同时了解这些对象所具有的属性及展示这些对象的行为。
  在计算机领域中,面向对象(Object-Oriented)是一种编程范式或编程思想。 它将计算机程序视为一组对象的集合,每个对象都有自身的属性(数据)和行为(方法)。面向对象编程(OOP)的核心思想是通过对象之间的交互来实现程序的功能和逻辑。
  在面向对象编程中,程序被看作为一组对象,这些对象可以相互进行通信、交互,以及 通过彼此调用的方法来完成任务。每个对象都是类的实例,类定义了对象的属性和行为。

什么是类?

  类是同一类事物的统称,如果将现实世界中的一个事物抽象为对象 ,类就是这类对象的统称。如鸟类、家禽类、人类等。即类是对一组具有相似特征(属性)和行为(方法)的对象的描述。
以汽车为例,Car类可以定义汽车具有的属性,如颜色、型号、速度等,以及行为如启动、加速、停止。所有的汽车都拥有这些特征和行为。

什么是对象?

  对象是类的实例化,具有自己的状态(属性)和行为(方法)。可以将对象理解为现实世界中的实物或者概念。比如一辆汽车、一本书、一个人等都可以用对象表示。以汽车为例,如果有一个名为Car的类,那么可以创建一个具体的汽车对象,比如“Car_A”,这个Car_A就可以具有颜色、型号等属性,并可以执行启动、加速等行为。

面向对象的三大特征

面向对象编程具有三大特征,分别是封装(Encapsulation)、继承(Inheritance)和多态(Polymorphism)。

封装

  封装是面向对象编程的核心思想。将数据和操作数据的方法组合在一起,构成一个无法分割的整体。对象的内部细节被隐藏,只暴露必要的接口给外部。
  因为数据被封装,所以用户不需要知道对象内部的细节,只需要通过调用接口来访问这个对象。这种方式可以确保数据的安全性和完整性,同时减少了对外部的依赖性。

封装的优点

-  减少耦合
-  提高可重用性
-  降低风险,即使整个系统不可用,但这些独立的模块可用

封装的实现方式

私有访问权限:在类中将属性设置为私有(private),这样外部就无法直接访问这些属性,只能通过类中定义的公共方法进行访问和修改。

public class Car {
    private String color;
    private int speed;

    public void setColor(String newColor) {
        this.color = newColor;
    }

    public String getColor() {
        return this.color;
    }

    // 其他方法...
}

继承

  继承是面向对象编程的一种机制,它允许一个类(子类)基于另一个类(父类)的定义来创建新的类。 子类继承父类的属性和方法,并且在此基础上可以添加新的属性和方法,或者修改父类中的方法实现。
   继承的核心概念是子类继承了父类的特征和行为,并且可以通过继承建立类之间的层次关系,使代码更加清晰和易于管理。

继承的要点及实现:

  • 父类和子类:
    父类使被继承的类,它定义了一组共享的属性和方法。子类是继承父类的类,它可以使用父类的属性和方法,并可以增加新的属性和方法。
  • extend 关键字:
    在Java中,使用extend 关键字来实现继承关系。子类通过extend 指定父类。
    public class Animal {
    // 父类属性和方法...
    }
    public class Dog extends Animal {
    // 子类特有属性和方法...
    }
    

多态

  多态是面向对象编程的一个重要特征。它指的是同一个方法调用可以在不同的对象上有不同的行为。 多态性使程序可以根据对象的实际类型来执行不同的操作,从而提高了代码的灵活性和可扩展性。

多态的种类及实现方式

多态分为编译时多态和运行时多态

  • 编译时多态 发生在编译阶段,指编译时就能确定调用了哪个方法,主要体现在方法的重载(Overload),即同一个类中有多个同名的方法,单参数列表不同,编译器根据参数类型及数量来确定调用哪个方法。

    • 编译时多态实现方式:
    class Calculator {
    public int add(int a, int b) {
        return a + b;
    }
    
    public double add(double a, double b) {
        return a + b;
    	}
    }
    
    public class Main {
    public static void main(String[] args) {
        Calculator calc = new Calculator();
        int result1 = calc.add(2, 3); // 调用第一个重载方法
        double result2 = calc.add(2.5, 3.5); // 调用第二个重载方法
    	}
    }
    
    
  • 运行时多态 发生在程序运行时,指同一个方法调用在不同的对象上有不同的行为,主要体现在方法的重写(Override),子类重写父类的方法,并在运行时调用子类重写的方法。

    • 运行时多态有三个条件
      • 继承
      • 重写
      • 向上转型 (将一个子类的实例赋值给其父类类型的引用变量)
    • 运行时多态实现方式
    class Animal {
    public void sound() {
       System.out.println("Animal makes a sound");
        }
    }
    class Dog extends Animal {
    @Override
    public void sound() {
       System.out.println("Dog barks");
       }
    }
    public class Main {
    public static void main(String[] args) {
       Animal myAnimal = new Dog(); // 多态性
       myAnimal.sound(); // 实际调用的是 Dog 类中的 sound 方法
       }
    }
    
    
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。