本期内容:面向对象

2.1 什么是面向对象:

生活中的面向对象

洗衣服,吃饭
面向过程:关注点是过程 ————站在一个执行者的角度去考虑事情,做事情//step1.找个盆//step2.收集要洗的衣服//step3.放水,放洗衣粉。。//step4:洗一洗//step5:晒一晒面向对象:关注点是对象 ————站在指挥者的角度//step1:找个对象//step2:让他洗衣服生活中的面向对象:找合适的人,做合适的事儿。。
生活中的面向过程:亲力亲为,按照流程步骤来,一步一步,吭哧吭哧。。

代码中的面向对象:

Arrays类:sort();//排序binarySearch();//搜索
Scanner类:    nextInt();next();nextDouble{};

2.2 面向对象和面向过程:

//面向对象编程:OOP Object-Oriented ProgrammingOOP不是一种语言,而是一种编程思想Object:对象     Oriented:方向,定向    Programming:程序
//面向对象:A.分析当前的问题域中所涉及的对象B.这些对象有什么样的特征和功能:1.外部特征:静态属性 2.动作行为:动态属性C.对象与对象之间的关系:继承关系、聚合关系、关联关系类的堆彻

2.3 类和对象

对象
人类Person 钟南山院士,你,我,王二狗,李小花,袁隆平爷爷,马云爸爸。。
狗类 幻影,忠犬八公,二哈,啸天
猫类 嘟嘟,卡卡,你家的猫,姥姥家的白猫
汽车类 我的黑色的长城车,58台红旗车,撞我的那台车。。
笔记本电脑类 我现在用的这个电脑15寸的pro,王二狗的华硕,你媳妇的联想
手机类 我的华为Mate30,你的小米mix2s,你媳妇用诺基亚n95
类:其实指的就是类别,一个抽象的概念。对同一类事物的统称。对这类事物进行描述,--->创建class
对象:类中的一个具体的实例,客观存在的,能用。个体。

如何定义一个类:

  • 要有能够描述这一类别的外部特征——我们叫做属性(静态属性)

    变量就可以。(名词)

  • 要有能够描述这一类别的行为功能——我们叫做方法(动态属性)

    方法就可以。(动词)

2.4 Java中定义类的格式

/*
class ClassName{//类名首字母大写//属性描述:外部特征//行为描述:能够干啥
}
*/
要求:1、CLassName要求符合驼峰命名法,首字母大写,见名知意。2、属性描述:外部特征,用于描述这个类别的一些特征,而这些特征通过一个"词"来描述清楚,比如姓名,年龄。使用变量来表示。——【成员变量】Field,词义"字段"3、行为描述:能够干啥,用于描述这个类别的一些行为功能,而这些行为功能,是一个动作行为,比如吃饭,睡觉。使用方法来表示。——【成员方法】Method,词义"方法"不要加static。

​ 方法:一段具有独立功能的代码

2.4.1 step1声明类

public class Person{}Person是类的名字

2.4.2 step2声明类中的【成员变量】

public class Person {//step2:成员变量String name;//使用String类型的变量name,表示人类中的姓名int age;//使用int类型的变量age,表示人类中的年龄char sex;//使用char类型的变量sex,表示人类中的性别
}

2.4.3 step3声明类中的【成员方法】

//step1:声明类
public class Person {//step2:成员变量String name;//使用String类型的变量name,表示人类中的姓名  int age;//使用int类型的变量age,表示人类中的年龄char sex;//使用char类型的变量sex,表示人类中的性别
//step3:成员方法public void eat(){System.out.println("吃饭");}public void sleep(){System.out.println("睡觉");}public void daDouDou(){System.out.println("打豆豆");}
}

2.5 类的对象

2.5.1创建类的对象

​ 创建对象也叫做类的实例化,对象也叫做类的实例。

/*
new关键字
new,词义:新的,新建
new 关键字,专门用于新建对象。
*/
Scanner sc = new Scanner();//Scanner也是个类,Person也是个类。
int[] arr = new int[5];语法结构:
/*
类名 对象名 = new 类名();
*/

step1:创建类

step2:g根据类,实例化对象

2.5.2 通过对象访问属性

/*
int[] arr = new int[5];
获取数组的长度:
arr.length
arr的长度
*/
对象访问属性的语法:就是一个.
//给对象的属性,进行赋值
p1.name = "王二狗";//给p1这个对象的name属性进行赋值
p1.age = 18;
p1.sex = '男';//获取对象的属性值
System.out.println("姓名:"+p1.name);
System.out.println("年龄:"+p1.age);
System.out.println("性别:"+p1.sex);

2.5.3 通过对象访问方法

/*
Scanner sc = new Scanner();
sc.nextInt();
*/
Scanner,就是一个class,一个类
sc,是根据Scanner创建出来的一个对象对象调用类中的方法,语法,也是.
对象.方法名();
p1.eat();
p1.sleep();
p1.daDouDou();

2.6 内存分析

实例代码:

package day12_OOP;public class Test2Person {public static void main(String[] args){//1.创建一个Person类的对象:Person p1 = new Person();System.out.println(p1);//p1的内存地址:day12_OOP.Person@15db9742p1.name = "大熊";p1.age = 10;p1.sex = '男';System.out.println(p1.name);//大熊System.out.println(p1.age);//10System.out.println(p1.sex);//男
//2.再创建一个Person类的对象:Person p2 = new Person();System.out.println(p2);//p2的内存地址:day12_OOP.Person@6d06d69cp2.name = "静香";p2.age = 10;p2.sex = '女';System.out.println(p2.name);//静香System.out.println(p2.age);//10System.out.println(p2.sex);//女
//3.声明一个Person类型的对象,但是实际上并没有在堆内存中创建真正的对象:Person p3 = null;//System.ouy.println(p3);强行访问对象的属性或调用方法,会报错:NullPointerExceptionp3 = p1;//把p1的值(p1对象的内存地址)赋值给p3,结果:p1和p3存储的是同一个对象的内存地址。p3.name = "哆啦A梦";System.out.println(p1.name);//哆啦A梦System.out.println(p2.name);//静香System.out.println(p3.name);//哆啦A梦
//4.再创建一个Person类的对象:Person p4 = new Person();System.out.println(p4);//p4的内存地址:day12_OOP.Person@7852e922p4.name = "胖虎";p4.age = 11;p4.sex = '男';System.out.println(p4.name);//胖虎System.out.println(p4.age);//11System.out.println(p4.sex);//男
//5.改变对象的内存地址:p4 = p1;System.out.println(p1.name);//哆啦A梦,看26行27行System.out.println(p3.name);//哆啦A梦System.out.println(p4.name);//哆啦A梦 }
}

内存分析:

对象创建:
Person p1 = new Person();
//=左边,对象的声明,开辟栈内存
//=右边,有new,开辟堆内存,创建对象,将对象的内存地址,给p1
//结论:p1是Person类型的对象,属于引用类型,存储的都是对象的内存地址。

day12-面向对象相关推荐

  1. 编程中的英语单词大全

    学习Java中用到的专业术语单词总结 day1 掌握 1.JDK abbr. Java开发工具包(Java Developer's Kit) (abbr.缩写) 2.JRE abbr. Java运行环 ...

  2. 一般英文(java)

    day1 Java概述 掌握 1.JDK abbr. Java开发工具包(Java Developer's Kit) (abbr.缩写) 2.JRE abbr. Java运行环境(Java Runti ...

  3. Java相关英语单词

    day1 Java概述 掌握 1.JDK abbr. Java开发工具包(Java Developer's Kit) (abbr.缩写) 2.JRE abbr. Java运行环境(Java Runti ...

  4. Java SE 30天入门

    官方视频链接:https://www.bilibili.com/video/BV1Kb411W75N 所有博文移至博客园.下一个笔记系列是数据结构与算法.欢迎查阅!! 整理好的笔记文件:https:/ ...

  5. Day12 学习分享 - 面向对象

    1. 生活中的面向对象 需求: 我想吃烤羊排A. 找一个烧烤店吃1. 选店铺2. 找座位并点餐3. 等待烤制4. 吃5. 结账走人B. 自己做着吃1. 买羊排, 买材料2. 准备材料3. 做羊排, 放 ...

  6. day12、面向对象进阶(包、权限修饰符、final、常量、枚举、抽象类、接口)

    面向对象进阶(包.权限修饰符.final.常量.枚举.抽象类.接口) 包 权限修饰符 final 常量 常量概述和基本作用 常量做信息标志和分类 枚举 枚举的概述 枚举的使用场景演示 抽象类 抽象类概 ...

  7. java多态口诀,Java之路---Day12(多态),多态Java

    Java之路---Day12(多态),多态Java 2019-10-26-22:40:09 目录: 1.多态的概念 2.多态的分类 3.实现多态的三个必要条件 4.多态的格式 5.多态成员变量的使用特 ...

  8. Python菜鸟入门:day12编程学习

    写在前面: 此博客仅用于记录个人学习进度,学识浅薄,若有错误观点欢迎评论区指出.欢迎各位前来交流.(部分材料来源网络,若有侵权,立即删除) 传送门: day01基础知识 day02知识分类 day03 ...

  9. 七.面向对象编程(中)

    本篇文章是根据视频学的,来源如下所示: 教程来源: java基础到高级_零基础自学Java–尚硅谷–宋红康 教程视频地址: java基础到高级_零基础自学Java--尚硅谷--宋红康_哔哩哔哩_bil ...

  10. 东软大三上学期实训笔记-javase篇Day12

    javase篇Day12 1.类 2.对象的创建 3.构造方法: 4.面向对象三大特性 5.封装: 6.this 关键字 7.继承: 8.方法的重写(方法的覆盖): 9.super 10.多态: 11 ...

最新文章

  1. 警告: Could not load driverClass com.mysql.cj.jdbc.Driver
  2. request获取int类型的值_获取通话记录或通讯录的数量为负值
  3. 以下选项不是python打开方式的是-以下选项中,不是Python对文件的打开模式的是...
  4. 高德地图API 简单使用
  5. python基础学习11----函数
  6. Py之seaborn:数据可视化seaborn库(二)的组合图可视化之密度图/核密度图分布可视化、箱型图/散点图、小提琴图/散点图组合可视化的简介、使用方法之最强攻略(建议收藏)
  7. C/C++中extern关键字详解与应用
  8. PKG_CONFIG_PATH错误提示解决办法
  9. Hyhyhy – 专业的 HTML5 演示文稿工具
  10. 所有的低谷,都是为了更上一层楼
  11. Hello world cpp之旅 - 字符串(1)
  12. 【win10压缩卷问题解决】:无法将卷压缩到超出任何不可移动的文件所在点
  13. aix服务器删除文件命令,AIX删除文件系统
  14. 无社交,不创业:2017松松兄弟上海聚会剧透
  15. Android Studio清单文件合并规则
  16. 残差(residual)
  17. 聊天机器人框架Rasa资源整理
  18. 中国15家外卖O2O大盘点-2014
  19. ESP32C3 WiFi 连接
  20. 取消小米笔记本插入耳机后弹框

热门文章

  1. Mysql远程命令连接
  2. 黑马程序员 Vuex 笔记
  3. 购买阿里云服务器地域节点如何选择?
  4. 求任意半径圆的面积c语言,需要一个输入半径求圆面积的C语言程序
  5. PyG搭建R-GCN实现节点分类
  6. WeTest性能测试工具PerfDog为什么这么牛这篇文章告诉你
  7. oracle数据库升级失败怎么办,【案例】Oracle报错ORA-00918 数据库升级后遇到SQL BUG 5368296...
  8. v-for与v-if(v-show)的配合使用
  9. web前端之JavaScript的插件下载指令及介绍、npm、install、save、require
  10. JavaScript---day03