Java面向对象

本文介绍了面向对象编程的概念,以Java为例,讲解了类、对象、封装、继承和多态等核心概念。通过实例展示了如何创建和初始化对象,以及构造器在对象初始化中的作用。面向对象编程强调以类和对象的方式组织代码,实现代码的复用和模块化,提高了程序的灵活性和可维护性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

面向过程和面向对象

面向过程
面向过程的思维模式是简单的线性思维,思考问题首先陷入第一步做什么、第二步做什么的细节中。这种思维模式适合处理简单的事情
面向对象
面向对象的思维模式说白了就是分类思维模式。思考问题首先会解决问题需要哪些分类,然后对这些分类进行单独思考。最后,才对某个分类下的细节进行面向过程的思索

什么是面向对象

Java的编程语言是面向对象的,采用这种语言进行编程称为面向对象编程(Object-Oriented Programming, OOP)。
面向对象编程的本质就是:以类的方式组织代码,以对象的组织(封装)数据。
对象:对象是类的一个实例,有状态和行为。例如,一条狗是一个对象,它的属性有:颜色、名字、品种;行为有:摇尾巴、叫、吃等。一个人也可以是一个对象,他的属性有:名字、身高、年龄;行为有:吃饭、学习、工作。
:类是一个模板,它描述一类对象的行为和属性。
面向对象的三大特征
封装
封装是面向对象的特征之一,是对象和类概念的主要特性。封装是把过程和数据包围起来,对数据的访问只能通过指定的方式。
在定义一个对象的特性的时候,有必要决定这些特性的可见性,即哪些特性对外部是可见的,哪些特性用于表示内部状态。
通常,应禁止直接访问一个对象中数据的实际表示,而应通过操作接口来访问,这称为信息隐藏。
信息隐藏是用户对封装性的认识,封装则为信息隐藏提供支持。
封装保证了模块具有较好的独立性,使得程序维护修改较为容易。对应用程序的修改仅限于类的内部,因而可以将应用程序修改带来的影响减少到最低限度。
继承
继承是一种联结类的层次模型,并且允许和支持类的重用,它提供了一种明确表述共性的方法。
新类继承了原始类后,新类就继承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的基类(父类)。
派生类(子类)可以从它的基类(父类)那里继承方法和实例变量,并且派生类(子类)中可以修改或增加新的方法使之更适合特殊的需要继承性很好的解决了软件的可重用性问题。比如说,所有的Windows应用程序都有一个窗口,它们可以看作都是从一个窗口类派生出来的。但是有的应用程序用于文字处理,有的应用程序用于绘图,这是由于派生出了不同的子类,各个子类添加了不同的特性。
多态
多态性是指允许不同类的对象对同一消息作出响应。
多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题。

创建初始化对象

使用new关键字创建对象
使用new关键字创建的时候,除了分配内存空间之外,还会给创建好的对象 进行默认的初始化以及对类中构造器的调用。
示例
Student类(不需要写main方法)

package opp.demo01;
//学生类
public class Student {
    //属性:字段
    String name;
    int age;
    //方法
    public void study(){
        System.out.println(this.name+"学生在学习");
    }
}

在这个Student类中创建了这个学生的属性:name和age 方法(行为):学习
然后再新建一个Application类用来初始化Student类

package opp.demo01;

public class Application {
    public static void main(String[] args) {
        //类:抽象的,实例化
        //类实例化后会返回一个自己的对象
        //student对象就是一个Student类的具体实例
        Student xiaoming = new Student();
        Student xiaohong = new Student();
    }
}

这里就创建了xiaoming和xiaohong两个同学的student对象
初始化对象后如果没有给对象属性赋值,将会自动给对象赋默认值
例如
在这里插入图片描述
可以看到这里分别输出了xiaohong的name和xiaoming的age都为默认值,如果我们给对象赋值将会输出我们给对象赋的值
例如
在这里插入图片描述
这里给xiaohong的name赋值小红给xiaoming的age赋值18,输出结果为对应所赋的值

构造器

新建一个Person类
我们可以在Application类中new一个Person对象,这个过程叫实例化一个对象
编译一下之后,我们查看Person类编译生成的class文件
在这里插入图片描述
可以发现我们在源文件中并没有写public Person(){}这个方法,在编译后的文件中居然有这个方法,而且这个方法名和类名一样并且没有返回值,其实这个就是构造方法,当你生成一个类后,系统会自动生成一个无参数的构造方法。
构造方法有以下两个特点:

  1. 必须和类的名字相同
  2. 必须没有返回类型,也不能写void

构造器的作用
1.在实例化对象之后对调用构造方法
2.初始化对象的值
一个类即使什么都不写,他也会存在一个无参构造方法,这个无参构造作用就是初始化对象的值,但一旦有了有参构造,默认的无参构造就失效,需要显示定义
示例:
没有写有参构造
在这里插入图片描述
当写了有参构造,实例化对象不进行传参就会报错,此时我们需要实例化对象时进行传参
在这里插入图片描述
或者在类中定义一个显示的无参构造,就不会继续报错
在这里插入图片描述
我们还可以定义多个有参构造
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值