面向对象与面向过程的区别

  • 面向过程:主要关注具体过程,因果关系

    • 优点:对于业务逻辑比较简单的程序,可以得到快速开发,前期投入成本比较低
    • 缺点:由于面向过程的使用让程序间的元素“耦合度”过高,导致程序维护不便,且可拓展性差
  • 面向对象:主要关心对象【独立体】能完成哪些功能

    • 优点:耦合度低,可拓展性强,组件复用性高
    • 缺点:前期投入成本高,概念抽象,对于对象【独立体】构建不易

面向对象的三大特征

  • 封装
  • 继承
  • 多态

采用面向对象编程的过程:

  • 面向对象的分析:OOA
  • 面向对象的设计:OOD
  • 面向对象的编程:OOP

类与对象的概念

  • 什么是类?

    • 类是一概念,是由人思考抽象的结果
    • 类代表了一类事物,人对现实中个体的共同特征进行总结归纳成一个概念,称之为【类】
    • 类可以看成是创建 Java 对象的模板
  • 什么是对象?

    • 现实中实际存在的个体

类中有属性和行为

  • 属性:状态信息,自带的特征,比如【花】这个类,颜色就是属性
  • 行为:动作信息,能与环境完成交互,比如【狗】这个类,等就是行为

类的定义

语法结构:

    [修饰符列表] class 类名{
属性;
方法;
}

重点:

  • 属性通常是采用一个变量的形式来完成定义
  • 行为则是通过方法来描述

例子(定义一个学生类):

  • 首先,分析一下 学生类

    • 学生有什么属性

      • 学号

      • 姓名

      • 年龄

        . . .

    • 学生有什么行为

      • 学习

      • 吃饭

      • 睡觉

        . . .

// 定义一个学生类

public class Student{

    // Student 属于类 是引用数据类型,类似 String

    // 类体 = 属性 + 方法

    /*
学号信息不能直接通过“类”访问,所以这种成员变量又被称作:实例变量
对象又被称作实例,实例变量就是对象变量【对象级别的变量
不创建对象,id 变量的内存空间是不存在的
*/ int id; // 学号 String name; // 姓名 int age; // 年龄
}

对象的创建和使用

在Java代码中

  • 什么是对象?

    new 运算符在堆内存中开辟的内存空间被称为对象

  • 什么是引用?

    引用是一个变量,只不过这个变量中保存了另一个Java对象的内存地址

Java中引用与C语言中的指针区别

  • Java中引用程序员不能直接操作堆内存
  • C中能使用指针对内存自由操作

引用的操作:

  • 读取数据:引用.变量名
  • 修改数据:引用.变量名 = 值
public class OOTest01{

    public static void main(String[] args){

        // new 是一个Java语言中的一个运算符
// new 运算符的作用创建对象,在JVM的堆内存中开辟新的内存空间
// 栈内存(局部变量):方法代码片段执行的时候,会给该方法分配内存空间,在栈内存中压栈
// 堆内存:new 创建的对象在堆中存储 Student jom = new Student(); jom.id = 1;
jom.name = "Jom";
jom.age = 18; System.out.println(jom.name + "的学号:" + jom.id);
System.out.println(jom.name + "的年龄:" + jom.age);
}
}
/*
局部变量在栈内存中存储
成员变量中的实例变量在堆内存的java对象内部存储
实例变量是一个对象一份,个算个的
*/

注意:上面两个文件在同一个目录


Java面向对象



学习笔记--初识Java面向对象的更多相关文章

  1. Java程序猿的JavaScript学习笔记(6——面向对象模拟)

    计划按例如以下顺序完毕这篇笔记: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScript ...

  2. 学习笔记之Java程序设计实用教程

    Java程序设计实用教程 by 朱战立 & 沈伟 学习笔记之JAVA多线程(http://www.cnblogs.com/pegasus923/p/3995855.html) 国庆休假前学习了 ...

  3. SSH 框架学习之初识Java中的Action、Dao、Service、Model-收藏

    SSH 框架学习之初识Java中的Action.Dao.Service.Model-----------------------------学到就要查,自己动手动脑!!!   基础知识目前不够,有感性 ...

  4. JavaSE入门学习21:Java面向对象之接口(interface)(二)

    一接口实现的多态 在上一篇博文:JavaSE入门学习20:Java面向对象之接口(interface)(一)中提到了接口的实现存在多态性,那么 这一篇主要就要分析接口实现的多态. 实例一 Test.j ...

  5. JavaSE入门学习24:Java面向对象补充

    一Java中的Object类 Object类是全部Java类的父类.假设一个类没有使用extendskeyword明白标识继承另外一个类,那么这个类默认 继承Object类. public class ...

  6. JavaSE学习笔记(一)----java基础

    本文来自博客园,作者:{张果},转载请注明原文链接:{JavaSE学习总结(一)--java基础} 一.Java是什么 Java 是由 Sun Microsystems 在 1995 年首先发布的编程 ...

  7. 【知了堂学习笔记】java 自定义异常

    java 常见异常种类(Java Exception): 算术异常类:ArithmeticExecption 空指针异常类:NullPointerException 类型强制转换异常:ClassCas ...

  8. java学习笔记之Java的特点

    Java在如今的发展趋势而言,一直都是处于流行的原因自然也是随之而存在的. java的特点如下几个方面: 1.简单性 Java 实际上是一个 C++去掉了复杂性之后的简化版.如果读者没有编程经验,会发 ...

  9. Arduino学习笔记① 初识Arduino

    1.前言     近段时间,博主陆续更新了ESP8266学习笔记,主要开发平台是Arduino.但是,对于很多无基础的初学者来说,甚至不了解Arduino是什么.因此,博主决定加入一个Arduino学 ...

  10. Java学习笔记之—Java基础

    将学习到的JAVA基础用xmind记录了下来,需要原件的可以私信

随机推荐

  1. asp.net core api 3.1 dynamic 入参转json对象

    比如接口 public object GetList(dynamic obj){ //var jElement=(JsonElement)obj;//使用system.text.json处理 var ...

  2. Http 代理工具 实战 支持网页与QQ代理

    前言: 有些公司不让员工上Q或封掉某些网站,这时候,干着急没办法,只能鄱墙.如果上网搜代理IP,很少能用,用HTTP-Tunnel Client代理软件,免费的也是经常性的掉线.正好手头上有N台服务器 ...

  3. docker基础使用和资源限制

    为什么使用容器 docker设计目标: 提供简单的应用打包工具 开发人员和运维人员职责逻辑分离 多环境保持一致性 轻量级 kubernetes设计目标: 集中管理所有容器 资源编排 资源调度 弹性伸缩 ...

  4. C#开源实用的工具类库,集成超过1000多种扩展方法

    前言 今天大姚给大家分享一个C#开源(MIT License).免费.实用且强大的工具类库,集成超过1000多种扩展方法增强 .NET Framework 和 .NET Core的使用效率:Z.Ext ...

  5. 瑞数456vmp逆向分析

    声明 本文章中所有内容仅供学习交流,抓包内容.敏感网址.数据接口均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,若有侵权,请联系我立即删除! 目标网站 aHR0cHM6 ...

  6. 语义化结构标签 多媒体标签 H5新增表单内容

    语义化结构标签: section  更偏向于一个区域类似div(块) article 更偏向于显示内容(块) aside 标签作为article呢绒的辅助板块(块) header 标签做为一个网页头部 ...

  7. FPS 是啥

    什么是 FPS 呢 ,FPS就是你所编写的应用程序一秒钟运行的次数,一秒钟运行120次,你的 FPS 就是 一百二 什么是帧速率 为什么有帧速率这一说 帧速率在 数学微积分中是平均运行的力度或者说是强 ...

  8. 高可用集群MHA方案

    爱奇艺在用的数据库高可用方案 MHA 是目前比较成熟及流行的 MySQL 高可用解决方案,很多互联网公司正是直接使用或者基于 MHA 的架构进行改造实现 MySQL 的高可用. MHA 能在 30 秒 ...

  9. jenkins结合远程仓库

    既然是持续集成,对代码进行构建,我们得获取代码仓库的内容,这里选择我们搭建的gitlab服务器 1.开发工程师的机器 1. 在window上生成ssh-key $ ssh-keygen.exe -t ...

  10. 字节面试:MySQL自增ID用完会怎样?

    在一些中小型项目开发中,我们通常会使用自增 ID 来作为主键的生成策略,但随着时间的推移,数据库的信息也会越来越多,尤其是使用自增 ID 作为日志表的主键生成策略时,可能很快就会遇到 ID 被用完的情 ...