一、面向过程与面向对象

面向过程: 从事务执行者的角度思考问题,我该干什么  重点在过程----事务流程

面向对象: 从事务的指挥者角度思考问题,我应该找谁干什么  重点在对象

面向对象的优点:

1.将复杂问题简单化

2.从事务的执行者转化为事物的指挥者

3.更贴近人的思维(懒人思想)

二、类和对象

类是Java中最基本的单位,是一类抽象事物的集合  对抽象事物的描述(模板)

对象: 用类创建出来的具体的事物就是对象

抽象描述类:

类中的属性是指成员变量

类中的行为是指成员方法//属性 (成员变量 实例变量)

//书写位置: 类中,方法外

//行为 (方法) 和Java中函数的声明一样,只是不写static关键字

//书写位置: 类中

创建一个类:  关键字 + class + 类名(大驼峰命名) + { }

例如: 创建一个学生类

属性:  姓名  年龄  性别

行为:  吃饭  睡觉  打游戏class Student{

String name;

int age;

String gender;

// 方法---成员方法、实例方法

public void eat(){

System.out.println("吃饭");

}

public void sleep(){

System.out.println("睡觉");

}

public void playGame(String game){

System.out.println("打" + game);

}

}

创建对象:  类名 + 对象名 = 初值;

例如: 创建一个学生类的对象Student stu = new Student();

// 使用 对象名.属性名 = 值; 对对象的属性进行赋值和取值

stu.name = "IT彭于晏";

stu.age = "16";

stu.gender = "男";

// 调用成员方法 对象名.方法名();

stu.eat();

stu.sleep();

stu.playGame("毒奶粉");

stu.sayHi(); //在类中声明一个sayHi方法,哪个对象调用该方法,打印的就是哪个对象的属性

三、成员变量与局部变量

成员变量与局部变量的区别:

1.书写位置不同:

成员变量:  类中方法外

局部变量:  方法中或方法上(参数位置)

2.在内存中的表现不同:

成员变量:  堆内存中

局部变量:  栈内存中

3.生命周期不同:

成员变量:  随着对象进入堆内存中创建,随着对象的销毁而销毁

局部变量:  随着方法的调用而入栈,随着方法的结束而销毁

4.作用域不同:

成员变量:  整个类中

局部变量:  方法中

5.初始值不同:

成员变量:  跟堆内存一样,有默认的初始值 0 null

局部变量:  默认没有初值 不给初值编译时会报错 (局部变量声明时必须带有初值)

四、同名类

在同一个项目中可以有同名的类,创建在不同的包下

创建不同包下的同名类,需要指定完整的包名来创建对象

一般情况下不建议写同名类

例如: 在包3和包4下各创建一个person类

//创建一个包3类的person对象

Person p1 = new Person( );

//在继续创建一个包4类下的person对象

com.bao3.Person p2 = new com.bao3.Person( ); // 需要指定完整的包名

注意:

在方法中基本数据类型的传递是值   引用数据类型则是地址的传递 (要什么类型给什么类型)

五、匿名对象

匿名对象: 没有名字的对象

1. 一般 在方法传参的时候调用

2. 只调用一下方法(不赋值的情况下)

使用匿名对象当方法的参数 可以减少代码量,方便使用public static void main(String[] args) {

// 创建两个Person对象 并赋值

// 将重复代码 抽成一个方法

Person p1 = new Person();

p1.name = "linqingxia";

p1.age = 16;

p1.sayHi();

Person p2 = new Person();

setNameAndAge(p2, "wangzuxian", 25);

// 使用匿名对象 当方法的参数

setNameAndAge(new Person(), "maoqiu", 20);

// 匿名对象 也是对象 也可以赋值 调用成员方法

new Person().name = "xin";

new Person().age = 30;

new Person().sayHi(); // 注意: 获取不到"xin" 30----每new一次在堆内存中新生成一块空间

// 只调用方法可以使用匿名对象

// 测试方法的时候 可能会使用

new Person().fun();

}

六、封装与构造方法

封装

Java中 写 方法、函数 就是封装的一种

封装相当于隐藏了代码的实现和属性 不能随意修改

需要开放访问的接口(方法 方式) 来获取或修改封装的代码

优点:

1.提高了代码的复用性

2.提高了代码的安全性

关键字 中的 权限修饰符--> private 私有的

被private修饰的属性 只能本类中访问

java bean 规范(java的实体类创建出来的对象)

1.声明成员变量 都需要 私有化

2.给每个成员变量提供set和get方法

3.必须提供 无参的构造方法class Phone{

private String phoneName;

// 获取方法

public String getPhoneName(){

return phoneName;

}

// 修改方法

public void setPhoneName(String phoneName){

this.phoneName = phoneName;

// 关键字 this 代表的是本类的对象

// this.成员变量 获取本类的成员变量

// this.成员变量 = "哈哈"; 给本类的成员变量赋值

// this.成员方法 调用本类的成员方法

// 谁调用了这个方法 谁就是this

}

}

命名规范

获取get + 成员变量名(首字母大写)

修改set + 成员变量名(首字母大写)

标准写法 set方法 是没有返回值的

构造方法

构造方法: 对对象的成员变量 进行初始化

写法:

1. 没有返回值位置(void也不用写)

2. 构造方法的方法名 要与 类名 完全一致

构造方法是系统帮你调用的

只要你创建对象 系统就会自动调用构造方法

构造方法 只会执行一遍class Pen {

/*

* 类中书写顺序

* 1.成员变量

* 2.构造方法---无参的 有参的

* 3.成员方法---sayHi之类的 自己写的

* 4.set/get方法

*/

private String name;

private String color;

// 构造方法(无参)

public Pen() {

// 初始化成员变量(给成员变量赋值)

this.name = "圆珠笔";

this.color = "红色";

System.out.println("我是pen类的无参构造方法");

}

// 有参构造方法(构造方法的重载)

// 为了在创建对象的同时 给成员变量赋值

public Pen(String name,String color) {

this.name = name;

this.color = color;

System.out.println("我是有参的构造方法");

}

}// 介绍自己的方法

public void sayHi() {

String name = "linaiang";

// 使用this 可以区分 成员变量 和 局部变量

System.out.println(this.name + " " + this.color);

}

JAVA类思维_面向对象思维 Java中的类和对象及其应用相关推荐

  1. java 求导函数_面向对象编程 —— java实现函数求导

    文章目录 首先声明一点,本文主要介绍的是面向对象(OO)的思想,顺便谈下函数式编程,而不是教你如何准确地.科学地用java求出函数在一点的导数. ★引子 defd(f) :defcalc(x) : d ...

  2. Java编程题_面向对象和常用API01_B级

    Java编程题_面向对象和常用API01_B级 第1题 面向对象.异常.集合.IO 题干: 请编写程序,完成键盘录入学生信息,并计算总分将学生信息与总分一同写入文本文件 需求:键盘录入3个学生信息(姓 ...

  3. 计算机JAVA相关说课稿_面向对象程序设计-java说课稿

    面向对象程序设计-java说课稿 面向对象程序设计-JAVA说课稿,计算机系 毕景霞,目录,一.说教材 二.说教学目标 三.说重点难点 四.说教学方法 五.说教学内容 六.教学效果及总结,(一)教材的 ...

  4. Java黑皮书课后题第9章:9.2(Stock类)遵照9.2节中Cirlce类的例子,设计一个名为Stock的类

    Java黑皮书课后题第9章:9.2(Stock类)遵照9.2节中Cirlce类的例子,设计一个名为Stock的类 题目 代码 Test2 Test2_Stock UML图 题目 代码 Test2:测试 ...

  5. Java黑皮书课后题第9章:9.1 (Rectangle类)遵照9.2节中Circle类的例子,设计一个名为Rectangle的类表示矩形

    Java黑皮书课后题第9章:9.1 (Rectangle类)遵照9.2节中Circle类的例子,设计一个名为Rectangle的类表示矩形 题目 代码 PS Test1 Test1_Rectangle ...

  6. java 添加注解_你知道Java中的package-info的作用吗?

    package-info.java对于日常业务开发的开发者来说,可能有点陌生,如果我们再项目中创建一个package-info.java,你会发现该类只有一个packge,如下 我们无法在该java文 ...

  7. java设计模式之—OO面向对象思维 Object Oriented(农场一头小母牛,每年生头小母牛,母牛5岁产母牛,20年上多少牛?)

    题目:农场一头小母牛,每年生头小母牛,母牛5岁产母牛,20年上多少牛? 目的:1.考验初学者面向对象设计理念.2.考验初学者的逻辑思维能力以及计算能力. 注:不考虑其他现实中的逻辑,比如没有公牛怎么生 ...

  8. java栈 类 堆_详细介绍Java中的堆和栈

    栈与堆都是Java用来在RAM中寄存数据的中央.与C++不同,Java自动管理栈和堆,程序员不能直接地设置栈或堆. Java的堆是一个运转时数据区,类的对象从中分配空间.这些对象经过new.newar ...

  9. java 字符串缓冲区_详解Java中字符串缓冲区StringBuffer类的使用

    StringBuffer 是一个线程安全的可变的字符序列.它继承于AbstractStringBuilder,实现了CharSequence接口. StringBuilder 也是继承于Abstrac ...

最新文章

  1. 打印机打印一次出三张_一次性帮你搞定3D打印机堵塞问题
  2. porphet论文_时间序列模型Prophet使用详细讲解
  3. requests库详解
  4. 年底了,总结一下大型网站的入侵经验[t00ls转载]
  5. 数据结构——堆栈的C语言实现
  6. iphone图片等比缩放
  7. mysql 从 a表updateb表_mysql A表自动更新和插入B表的数据
  8. html中一条横线代码怎么写_Vue VS React 在开发同一记账项目中二者的对比
  9. 最长上升子序列(LIS)题目合集
  10. 机器学习 | 数学基础
  11. OPNsense用户手册-硬件要求
  12. 04、docker端口映射的原理及配置方法
  13. idea关闭当前窗口的快捷键
  14. 【算法java版01】:键盘录入一个字符串,将字符串中的大写改成小写,小写改成大写,数字改成*
  15. 基于C#的ArcEngine二次开发28: 等高线高程值与国标码一致性检查思路及代码分析
  16. GPIO/输入模式/输出模式的学习
  17. 一页纸搞定项目管理及操作步骤(文末附可编辑模板)PMP项目管理可用
  18. 经常用到的Eclipse快捷键(windows版)
  19. 2021年麻城一中高考成绩查询,麻城一中2020年高考成绩 麻城一中2020年高考喜报...
  20. 测试人员绩效管理标准

热门文章

  1. 动手造轮子:实现一个简单的依赖注入(一)
  2. .NET Core on K8S学习实践系列文章索引(持续更新)
  3. 使用 dotnet 命令行配合 vscode 完成一个完整 .NET 解决方案的编写和调试
  4. 架构为什么要以领域为核心
  5. VS Tools for AI全攻略
  6. 小组是什么意思_生猪期货什么时候上市?相关企业如何参与生猪期货
  7. 【Envi风暴】Envi 5.4遥感影像镶嵌原来如此简单!
  8. 【ArcGIS遇上Python】ArcGIS Python实现Modis NDVI批量求年最大值
  9. windows之如何刷新电脑DNS缓存
  10. 谷歌浏览器之如何调试页面js