博客
关于我
Java-面向对象
阅读量:73 次
发布时间:2019-02-25

本文共 1779 字,大约阅读时间需要 5 分钟。

面向对象编程入门

一、面向对象的概念

面向对象编程是一种基于对象的编程范式,与面向过程编程有着本质的区别。面向过程编程(如C语言)关注的是程序的执行流程,而面向对象编程(如Java、C++、Python)则更注重新现实世界中事物的属性与行为。

面向过程 vs 面向对象

  • 面向过程:程序的执行者为主,方法论基于流程图。
  • 面向对象:程序的行为由对象执行,方法论基于类和对象。

面向对象的思维方式更贴近人类的日常交流方式,能够更好地反映实际生活中的事物特性。

二、类与对象

类的定义

类是一个事物的数据类型,是实体属性的集合。一个类具备基本信息和行为特征。

  • 类的基本信息:如工号、姓名、部门等。
  • 类的行为:如打针、护理等具体操作。

对象的概念

对象是根据类创建的具体实例,具备类中的所有属性和行为。例如:

  • :护士类

    • 基本信息:工号、姓名、部门
    • 行为:打针、护理
  • 对象:护士对象

    • 基本信息:89757、马磊、肛肠科
    • 行为:具体的打针动作、护理流程

在代码中,类的属性对应对象的属性,行为对应对象的方法。

三、成员与局部变量

成员变量 vs 局部变量

  • 成员变量

    • 作用范围:整个类
    • 默认值:与数组默认值一致
    • 生命周期:随对象创建而生,随对象释放而死
  • 局部变量

    • 作用范围:仅在方法中使用
    • 默认值:无
    • 生命周期:随方法执行结束而释放

成员方法 vs 局部方法

成员方法可以被类中任何方法调用,而局部方法仅限于当前方法使用。

四、类的定义与对象的创建

类的定义

类的定义格式如下:

public class 类名 {    属性定义;    方法定义;}

例如,定义一个Hero类:

public class Hero {    public String name; // 姓名    public int hp;    // 健康值    public boolean gender; // 性别    public int level; // 等级    public int exp; // 经验值    public void attack() { // 攻击方法    }    public void back() { // 退后方法    }    public void shopping() { // 购物方法    }}

对象的创建

创建对象的语法格式:

数据类型 对象名 = new 数据类型();

例如,创建一个Hero对象:

Hero h = new Hero();

属性与方法的调用

属性的使用方式:

// 赋值:h.name = "亚索";// 获取:int hp = h.hp;// 打印:System.out.println(h.exp);

五、引用数据类型作为方法参数和返回值

引用数据类型的传递与返回

  • 参数传递:传递引用类型时,方法接收到的是实参的地址。
  • 返回值:返回引用类型时,接收变量保存的是返回值的地址。

注意事项

  • 空指针异常:确保引用变量不为null,避免在使用对象的属性或方法时引发异常。
  • 示例:避免不经处理的null指针导致程序崩溃。

六、构造函数

构造函数的特点

  • 函数名:与类名一致。
  • 返回类型:无,不能为void。
  • 隐式构造函数:每个类都有一个默认的无参构造函数。
  • 构造函数重载:通过提供不同参数列表实现多种构造方式。

构造函数的作用

  • 创建对象:实例化类。
  • 初始化属性:为对象属性赋予初始值。

构造函数重载示例

public Employee(String a, int b, String c) {    name = a;    level = b;    report = c;}Employee e = new Employee("张三", 4, "良好");

this关键字

  • 作用:获取当前对象地址,避免属性和方法的混淆。
  • 示例
public Employee(String name, int level, String report) {    System.out.println("this的地址:" + this);    this.name = name;    this.level = level;    this.report = report;}
  • 特殊用途:调用其他构造函数,简化代码。

转载地址:http://qss.baihongyu.com/

你可能感兴趣的文章
Nim游戏
查看>>
NIO ByteBuffer实现原理
查看>>
Nio ByteBuffer组件读写指针切换原理与常用方法
查看>>
NIO Selector实现原理
查看>>
nio 中channel和buffer的基本使用
查看>>
NIO基于UDP协议的网络编程
查看>>
NISP一级,NISP二级报考说明,零基础入门到精通,收藏这篇就够了
查看>>
Nitrux 3.8 发布!性能全面提升,带来非凡体验
查看>>
NI笔试——大数加法
查看>>
NLog 自定义字段 写入 oracle
查看>>
NLog类库使用探索——详解配置
查看>>
NLP 基于kashgari和BERT实现中文命名实体识别(NER)
查看>>
NLP 项目:维基百科文章爬虫和分类【01】 - 语料库阅读器
查看>>
NLP_什么是统计语言模型_条件概率的链式法则_n元统计语言模型_马尔科夫链_数据稀疏(出现了词库中没有的词)_统计语言模型的平滑策略---人工智能工作笔记0035
查看>>
NLP学习笔记:使用 Python 进行NLTK
查看>>
NLP的神经网络训练的新模式
查看>>
NLP采用Bert进行简单文本情感分类
查看>>
NLP问答系统:使用 Deepset SQUAD 和 SQuAD v2 度量评估
查看>>
NLP:使用 SciKit Learn 的文本矢量化方法
查看>>
Nmap扫描教程之Nmap基础知识
查看>>