面向对象


面向过程:根据业务逻辑从上到下写代码

函数式编程:对一些功能的代码封装到函数中,日后无需重复编写,直接调用函数就可以了

面向对象:将所有的功能进行封装,面对的事封装了功能的实体(对象),即面向对象。

面向对象基于面向过程,只是把过程进行了对象的封装。

只要找到了对象,就可以使用对象中的功能。

通俗点讲,你去饭店去吃水煮肉,你不需要会做水煮肉,只需要告诉大厨你要吃水煮肉,他会做就可以了,你直接指挥他给你做就可以了,这就是面向对象。

所以,以后开发,先找对象以及对象的功能。如果没有,自己创建对象并将所需的功能定义到该对象中。

面向对象的好处:

1.面向对象是一种更符合人们思考习惯的思想

2.面向过程中更多的体现的是执行者,面向对象中更多的体现的是指挥者。

3.面向对象将复杂的问题简单化了。

佛曰:世间万物皆为对象。

面向对象如何应用到需求中呢?

在需求中尽量地去寻找对象。(从问题领域抽取对象)

最简单的思考访问:一般情况,名词表示的大多是对象。

比如:

需求:将大象装进冰箱里。

对象就是:大象,冰箱

一副图简单介绍对象的关系

可以理解为:

类就是图纸

汽车就是堆内存中的对象

类的定义

生活中描述事物无非就是描述事物的属性行为

比如:人有身高体重的属性,有吃饭,睡觉等行为。

描述人可以这样描述:

  1. 事物的属性:
  2. 身高;
  3. 体重;
  4. 事物的行为(功能):
  5. 吃饭;
  6. 睡觉

简单理解:属性就是数值,其实就是变量;行为就是功能,就是函数。

java中用类class描述事物也是如此。

属性:对应类中的成员变量

行为:对应类中的成员函数

定义类其实是在定义类中的成员变量和成员函数

类与对象的关系:

  • 类:对事物的描述。需要体现属性和行为。

  • 对象:该类食物创建的实例(实体),通过该对象调用具有的属性和行为。

成员变量和局部变量的区别?

成员变量

  • 成员变量定义在类中,在整个类中都可以被访问

  • 成员变量随着对象的建立而建立,存在于对象所在的堆内存中。

  • 成员变量有默认的初始化值。

局部变量

  • 局部变量之定义在局部范围内,如:函数内,语句内等
  • 局部变量存在于栈内存中
  • 作用的范围结束,变量空间会自动释放
  • 局部变量没有默认初始化值
  1. class Person{
  2. //定义属性
  3. int height;//身高
  4. int weight;//体重
  5. //定义方法
  6. public void eat(){
  7. System.out.println("eatting..."); //吃饭
  8. }
  9. public void Zzzz(){
  10. System.out.println("Zzzzzz..."); //睡觉
  11. }
  12. }

欢喜冤家public和private(私有)

private关键字

  • 是一个权限修饰符
  • 用于修饰成员(成员变量和成员函数)
  • 被私有化的成员只在本类中有效

常用的方法:

  • 将成员变量私有化,对外提供对应的setget方法对其进行访问。提高对数据访问的安全性。

先来看public和private的区别

  1. class PersonDemo1{
  2. public static void main(String[] args){
  3. Person p = new Person();
  4. System.out.println(p.weight);
  5. System.out.println(p.height);
  6. }
  7. }
  8. class Person{
  9. private int height;
  10. public int weight = 60;
  11. public void eat(){
  12. System.out.println("eatting...");
  13. }
  14. public void Zzzz(){
  15. System.out.println("Zzzzzz...");
  16. }
  17. }

如果只输出体重的话,是可以输出的,因为体重是public修饰的,意思是都可以访问。

而身高,被private修饰之后,就成了私有变量,外部就不能访问,编译之后报错:

  1. PersonDemo1.java:5: 错误: height Person 中是 private 访问控制
  2. System.out.println(p.height);

有些属性(变量)不想被外界更改,或者不想被外界调用,可以使用private。

那如果想被使用呢,那么就对外提供对应的setget方法对其进行访问。提高对数据访问的安全性。

  1. class PersonDemo1{
  2. public static void main(String[] args){
  3. Person p = new Person();
  4. p.setHeight(175); //通过set方法对私有变量进行操作
  5. System.out.println(p.weight);
  6. System.out.println(p.getHeight()); //调用方法记得加()
  7. }
  8. }
  9. class Person{
  10. private int height;
  11. public int weight = 60;
  12. public void eat(){
  13. System.out.println("eatting...");
  14. }
  15. public void Zzzz(){
  16. System.out.println("Zzzzzz...");
  17. }
  18. //设置外部访问的接口,写接口
  19. public void setHeight(int h){
  20. height = h;
  21. }
  22. //设置外部访问的接口,读接口
  23. public int getHeight(){
  24. return height;
  25. }
  26. }

这就是面向对象三个特性之一——封装

Java面向对象(一)----初次见面的更多相关文章

  1. JAVA面向对象

    JAVA面向对象 对象   我们生活中能看到能摸到的一切事物都是对象.在程序中模拟出生活中的所有东西万物皆对象   只要是对象--属性和行为(方法)   属性   对象有什么   例如:学生有姓名.学 ...

  2. 理解JAVA - 面向对象(object) - 属性,方法

    理解JAVA - 面向对象(object) - 属性,方法 多态的体现:    向上造型,父类接收子类对象:向上造型:    从父类角度看不到子类独有的方法:面向对象,人类认知世界的方式:生活中每天都 ...

  3. Java面向对象㈠ -- 封装

    Java的面向对象有三大特征:封装.继承.多态.这里主要对封装进行讲解. 封装可以理解为隐藏一个类的成员变量和成员函数,只对外提供需要提供的成员函数. Java的封装主要通过访问权限控制符:priva ...

  4. 谈谈Java面向对象的三大特性

    Java面向对象的三大特性就是指封装.继承.多态了. 一.封装: 概念:封装是指隐藏对象的属性和实现细节,仅对外提供公共访问方式. (举例:笔记本电脑就是一个封装体,Java语言中最小的封装体就是函数 ...

  5. Java面向对象:接口

    Java面向对象之接口 什么是接口:接口是一种规范和标准,他们可以约束类的行为,是一些方法特征的集合 语法: [修饰符] interface 接口名 extends 父接口1,夫接口2....... ...

  6. 实验二 Java面向对象程序设计

    实验二 Java面向对象程序设计 实验内容 1. 初步掌握单元测试和TDD 2. 理解并掌握面向对象三要素:封装.继承.多态 3. 初步掌握UML建模 4. 熟悉S.O.L.I.D原则 5. 了解设计 ...

  7. java基础1.0::Java面向对象、面向对象封装、抽象类、接口、static、final

    一.前言 一直以来都是拿来主义,向大神学习,从网上找资料,现在就把自己在工作中和学习中的所理解的知识点写出来,好记星不如烂笔头,一来可以作为笔记自己温习,二来也可以给走在求学之路的同学们一点参考意见, ...

  8. 20145212《Java程序设计》实验报告二 《 Java面向对象程序设计》

    20145212 实验二< Java面向对象程序设计> 实验内容 单元测试 三种代码 伪代码 百分制转五分制: 如果成绩小于60,转成"不及格" 如果成绩在60与70之 ...

  9. 20145213《Java程序设计》实验二Java面向对象程序设计实验报告

    20145213<Java程序设计>实验二Java面向对象程序设计实验报告 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装,继承,多态 初步掌握UML建模 熟悉S.O. ...

  10. 20145206《Java程序设计》实验二Java面向对象程序设计实验报告

    20145206<Java程序设计>实验二Java面向对象程序设计实验报告 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O. ...

随机推荐

  1. 如何在visual studio中,更改删除团队资源管理器的tfs地址 不能弹出来

    C:\Users\Administrator\AppData\Roaming\Microsoft\VisualStudio\16.0_8c6724b7\Team Explorer 进入文件夹:AppD ...

  2. linux不同环境变量文件的比较,如/etc/profile和/etc/environment

    /etc/profile 为系统的每个用户设置环境信息和启动程序,当用户第一次登录时,该文件被执行,其配置对所有登录的用户都有效. 当被修改时,必须重启才会生效.英文描述:"System w ...

  3. Dubbo SPI源码解析①

    目录 0.Java SPI示例 1.Dubbo SPI示例 2.Dubbo SPI源码分析 ​ SPI英文全称为Service Provider Interface.它的作用就是将接口实现类的全限定名 ...

  4. Gitignore 配置语法

    Gitignore 配置语法 原文地址:http://kuanghy.github.io/2016/05/17/gitignore Git 的 .gitignore 配置文件用于配置不需要加入到版本管 ...

  5. 多维数组遍历.php

    $a=array('fruits'=>array('a'=>'orange','b'=>'grape','c'=>'apple'),     'numbers'=>arr ...

  6. [leetcode]380. Insert Delete GetRandom O(1)设计数据结构,实现存,删,随机取的时间复杂度为O(1)

    题目: Design a data structure that supports all following operations in average O(1) time.1.insert(val ...

  7. 5. Longest Palindromic Substring最大回文子串

    int sta = 0; int max = 1; public String longestPalindrome(String s) { /* 判断回文有两种: 1.最大回文子序列求长度: 用动态规 ...

  8. 如何在 Linux 系统查询机器最近重启时间

    如何在 Linux 系统查询机器最近重启时间 在你的 Linux 或类 UNIX 系统中,你是如何查询系统上次重新启动的日期和时间?怎样显示系统关机的日期和时间? last 命令不仅可以按照时间从近到 ...

  9. android 百度地图 团队开发及正式apk发布

    百度地图开发关键是获取正确的API Key,  百度官网写的只是在你本地的机器能运行 你把AndroidManifest.xml(这里是最新的v2_4_1,API Key配置在这里) svn 提交后  ...

  10. Spring用了哪些设计模式?

    设计模式是一套被反复使用的.多数人知晓的.经过分类编目的.代码设计经验的总结.总共有 23 种设计模式 使用设计模式是为了重用代码.让代码更容易被他人理解.保证代码可靠性. Spring用了哪些设计模 ...