一、面向对象与面向过程的区别:
①所处的角色不同:前者指挥者,后者执行者;②所需知道的事情不同:前者知道哪些是做这些事情的人就可以,不需了解具体的事情操作的过程。后者需要具备应有的技能来做这些事情。
二、面向对象的基本操作过程
指挥者采用面向对象思想,通过创建类,来创建统一的属性值【成员属性】和(做事的)方法【成员方法】。
通过创建的类或者jdk已有的类,来创建具体的对象,属性值明确,方法明确。
举例:创建类

 package com.oracle.demo02;

 public class Person {
private String name;// 此时外部的类不能访问
private int age;// 隐藏实现细节
// 使用方法,提供接口进来的值 属性都私有化,并提供setXxx getXxx方法对其进行访问。 public void setName(String name) {
this.name = name;
} // 使用取值、、用于给出用户反馈
/*
* public String getName(){ return name; }
*/
public void setAge(int a) {
if (a >= 0 && a < 149) {
age = a;
} else {
System.out.println("该年龄不可信");
} } public int getAge() {
System.out.println("get");
return age;
} public void speak() {// 方法可以被外界访问
// name.age此时为成员变量,非局部变量
System.out.println("我的名字是" + name + "今年" + age + "岁。");
} // 在person类中定义功能,判断两个人是否同龄人
public boolean people(Person p) {
return p.age==this.age;//此时的this,指的是谁调用该方法就是谁
//传入两个,一个通过调用传入,一个通过形参传入
}
}

举例:创建对象及方法的调用

 package com.oracle.demo02;

 public class Demo01 {
public static void main(String[] args) {
Person p = new Person();
p.setName("张三");
p.setAge(35);
p.speak();
Person p2 = new Person();
p2.setName("xiao张三");
p2.setAge(35);
p2.speak();
//比较两人是否为同龄人
boolean flag=p2.people(p);
System.out.println(flag);
}
}
1、创建冰箱的对象
冰箱 bx = new 冰箱();  
2、调用冰箱的功能
对象.功能();
bx.打开();
bx.存储(new 大象());
bx.关闭();
public class 类名 {
//可编写0至n个属性 成员变量
    数据类型 变量名1;
    数据类型 变量名2;
//可编写0至n个方法 成员方法
修饰符 返回值类型 方法名(参数){
执行语句;
}
}

注:此时的成员方法的修饰符为public,而在测试类main中修饰符为public static

三、对象调用方法内存图

 
四、类和对象的区别
前提:面向对象的思想力求在设计类的时候,其成员属性和成员方法与现实要求一致。
区别
对象
关系
抽象的,比如人类的皮肤属性,未有具体的值
具体的,通过类,new一个新的对象,给皮肤属性赋值(黑、白、黄)
五、局部变量和成员变量的区别
区别
成员变量
局部变量
写法位置
直接定义在类中
定义在方法或{}语句中
内存位置
在堆中保存,具有地址
在栈中保存
生命周期
随着对象的出现而出现,使用gc()垃圾回收机制清除
随着方法的出现而出现,随着方法的消失而消失
初始化值
成员变量出现在堆中,属性有默认值;例如int 0;Boolean FALSE;String null;
局部变量出现在栈中,必须人为赋值才能使用
 
六、基本数据类型和引用数据类型的参数传递
区别
基本数据类型
引用数据类型
 
传递的具体的值,在栈中存在,方法用完执行弹栈
传递地址,在堆中存在,方法和main中均指向同一个地址和对象
 

最新文章

  1. SQL Server 阻止了对组件“xp_cmdshell”的 过程“sys.xp_cmdshell”的访问,因为此组件已作为此服务器安全配置的一部分而被关闭。
  2. Django进阶(二)
  3. User space 与 Kernel space
  4. JavaScript笔记杂谈篇(啥都有)
  5. CardView的简单介绍
  6. C# 反射创建对象,包括创建引用外部程序集类的实例
  7. php 依赖注入
  8. Django的列表反序
  9. c# WMI获取机器硬件信息(硬盘,cpu,内存等)
  10. 测试你是否和LTC水平一样高
  11. Android自定义带标题边框的Layout
  12. Java中的Math类的简单实用
  13. 通过ionice和nice降低shell脚本运行的优先级
  14. Day-6: 函数式编程
  15. 【ASP.NET Core快速入门】(十)Cookie-based认证实现
  16. git 切换远程仓库,以及碰到的一个问题。
  17. 【转】MFC内嵌cef3浏览器内核
  18. BZOJ3585&amp;3339mex——主席树
  19. Git误操作 git reset强制回滚 恢复commit方法
  20. 初次使用git上传代码(转)

热门文章

  1. 力扣(LeetCode)二进制间距 个人题解
  2. 剑指Offer-23.二叉搜索树的后序遍历序列(C++/Java)
  3. 关闭Eslint检查
  4. 读写分离很难吗?springboot结合aop简单就实现了
  5. PostGIS 使用Mysql_fdw同步ArcGIS填坑记录
  6. C# 未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0”
  7. 关于PHP中依赖注入的详细介绍
  8. KubeCon 2019 北美会议完美落幕 | 云原生生态周报 Vol. 29
  9. 新闻实时分析系统-Kafka分布式集群部署
  10. 【NHOI2018】衰减