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 方法 } }
- 运行时多态有三个条件
- 点赞
- 收藏
- 关注作者
评论(0)