面向对象编程思想

1.面向过程

​ 从计算机执行角度出发 ,代码执行过程核心为从程序的运行过程出发,构建编程思路,例: 哥德巴赫猜想

// 面向过程1 用户输入一个数n2 验证数字的正确性2.1 正确就继续向下2.2 错误就重复输入3 拆数    循环 n=a+b4.判断 a和b同为质数 则打印

2.1对象

计算机中的需求来自现实世界,现实世界是由对象组成。

对象:万物皆对象!


对象有属性和方法:

  a.属性: 对象有什么b.方法: 对象能做什么

2.2 对象间的关系:

    1. 继承关系    is    a      (一般--特殊  从属关系)例:宝马汽车是汽车2.  关联关系    has   a     (对象的属性又可以是另一个对象)例:汽车有发动机3.  依赖关系    use   a     (一个对象调用另外一个对象的方法)例:司机和汽车

3.面向对象思想

先找到解决问题所需要的对象,再建立对象间的关系, 以及利用对象所形成的过程.

4.计算机如何处理现实中的对象

计算机中的对象: 在计算机中,用一块特定的存储空间表示生活中的对象
计算机中的对象之间可以形成生活中对象之间的关系 (继承 关联 依赖)

5.类的概念

​ 类是数据类型,对象是数据

类: 对象共性的抽象, 是人对对象的认识, 是对象的模板

6.类的属性(成员变量)【重点】

​ 属性: 是成员变量

1.有默认值  数字类型默认值为0 ,boolean类型为false ,字符串类型为null
2.作用范围: 全类内部
3.成员变量可以和局部变量同名,同名时局部变量优先

成员变量和局部变量在内存中不一样?

7.类的方法

​java中没有函数的概念,函数是面向过程开发中的东西,在java中只有方法的概念。声明(5个部分组成): 修饰符(顺序无关紧要) 返回值类型 方法名 (形式参数表) 抛出的异常--->声明代表对象具有什么功能  实现: {}  代表对象怎么做

8.方法重载【重要】

方法重载 : 让对象方法由于参数表的不同所造成的差异,对用户屏蔽由编译器根据实参来匹配相应的方法 (编译时多态)方法重载:  方法名相同,参数表不同. 对返回值不做要求
参数表不同: 参数个数不同,参数类型不同,参数类型排列不同    (如果只有形参名不同,不算重载)

9.构造方法

​ 注:如果一个类中没有定义任何构造方法,则系统提供默认公开无参构造方法

构造方法: 特殊的方法
构造方法特点:
1.没有返回值类型  区分构造方法和普通方法的唯一标志
2.方法名必须和类名相同
3.不允许直接调用, 在对象构造的过程中自动调用一次对象构造的三个步骤:(没有继承的情况)​
1. 分配空间       属性被赋予默认值  ----> 根据对象的属性分配空间,不同对象所占的空间大小不同。
2. 初始化属性     属性被赋予初始值
3. 调用构造方法   属性通常被再次赋值
class Student{//1. 分配空间  属性被赋予默认值:name被赋值为null,age被赋值为0,score被赋值为0.0String name;int age = 10;//2. 初始化属性  属性被赋予初始值:age被赋值为10double score;public Student(){age = 20;//3. 调用构造方法   属性通常被再次赋值}public Student(String n , int a , double s){name = n;age = a;score = s;}
}

10.new 创建对象

​a.创建对象: 类名 引用名 = new 类名(构造参数)
​b.访问对象的属性或调用对象的方法:
​  引用名.属性
​  引用名.方法()
c.引用中存储对象的地址。 null表示空指针, 引用没有指向任何对象

11.Java中变量的数据类型

​      Java中的变量按照数据类型划分,分为两种

1.基本变量类型 : 存数值

2.引用类型(除了 8 种基本类型之外) : 存对象的地址

12.方法参数传递

参数传递: 基本类型参数传值, 对象类型参数传地址 (形参和实参指向同一对象)
//基本类型参数传值
public class TestReference{public static void main(String[] args){int a = 10;int b = a; b++;//b的值变成11System.out.println(a); //10changeInt(a);System.out.println(a); //10     }   static void changeInt(int a){a++;//changeInt()方法中的a变成11,但是没有返回给方法调用处,并没把方法返回值赋值给原来的a}
}
//对象类型参数传地址
public class TestReference{public static void main(String[] args){MyClass mc  = new MyClass();MyClass mc2 = mc;//mc是一个引用,这句代码把mc的引用复制给mc2,意思是mc和mc2指向的是同一个对象mc2.value++;System.out.println(mc.value); //21MyClass mc = new MyClass();/*首先,在主方法中,调用了 changeValue()方法,并且把 mc 作为实参,传递给形参 mc。要注意的是,由于 mc 是一个引用,保存的是一个对象的地址,因此进行传递时,传递给 mc的值就是一个对象的地址。这样,实参 mc 引用和形参 mc 引用中保存的内存地址相同,也就是说,这两个引用指向同一个对象。   */changeValue(mc);System.out.println(mc.value); //21}   static void changeValue(MyClass mc){mc.value++;}
}
class MyClass{int value = 20;
}

13.this关键字

作用:

  1. 引用 表示当前对象, 在类中访问自己的属性和方法时,如果不加引用,引用默认为 this.用this可以区分成员变量和局部变量

    class Student{String name;int age;public Student() { }public Student(String name, int age) {this.name = name;this.age = age;}
    }
  2. this(...) 用在构造方法中, 调用本类其他的构造方法 用于构造方法之间相互调用 必须是构造方法的第一条语句

class MyClass{int value;public MyClass(){this(10);System.out.println("MyClass()");}public MyClass(int value){this(); //对 this()的调用必须是构造方法的第一个语句this.value = value; //对 this.的调用位置没有限制}
}   

转载于:https://www.cnblogs.com/chenpeisong/p/9775219.html

CoreJava学习第五课 --- 进入第二阶段:面向对象编程思想相关推荐

  1. 列表怎么有限的初始化为零_《零基础学习Android开发》第五课 类与面向对象编程1-1...

    视频:<零基础学习Android开发>第五课 类与面向对象编程1-1 类的定义.成员变量.构造方法.成员方法 一.从数据与逻辑相互关系审视代码 通过前面的课程,我们不断接触Java语言的知 ...

  2. Emojify - v2 吴恩达老师深度学习第五课第二周编程作业2

    吴恩达老师深度学习第五课第二周编程作业2,包含答案! Emojify! Welcome to the second assignment of Week 2. You are going to use ...

  3. Java学习记录五(多线程、网络编程、Lambda表达式和接口组成更新)

    Java学习记录五(多线程.网络编程.Lambda表达式和接口组成更新) Java 25.多线程 25.1实现多线程 25.1.1进程 25.1.2线程 25.1.3多线程的实现 25.1.4设置和获 ...

  4. Java学习——面向对象编程思想

    目录 一. 基本概念 二. 面向对象与面向过程的区别 三. 面向对象程序设计的类与对象 3.1 对象 3.2 类 四. 面向对象的四大特征 4.1 抽象 4.2 继承 4.3 封装 4.4 多态 1) ...

  5. 基于STM32F103移植华为LiteOS_任务挂起与恢复_面向对象编程思想之按键状态机

    华为LiteOS_任务挂起与恢复_面向对象编程思想之按键状态机 因为在做华为LiteOS任务挂起和恢复需要使用到按键去触发任务挂起和恢复动作,因为我就萌发出使用状态机这种架构做一个按键检测触发.回想已 ...

  6. 面向对象编程思想及入门知识

    这几天在调程序,所以想写写自己对"面向对象编程"的一些理解,希望对打算入门计算机编程的同志们有所帮助.之前,好几个师弟问过我,C++与C有什么区别,学习面向对象语言需要掌握哪些基础 ...

  7. C++面向对象编程思想

    1.概述: 面向对象编程思想是很早就提出来早在1967年的时候,在挪威计算中心的Kisten Nygaard和Ole Johan Dahl开发了Simula67语言,它提供了比子程序更高一级的抽象和封 ...

  8. 我们程序员眼中的对象-看完华华的文章妈妈再也不担心我找不到对象了-Java面向对象编程思想理解系列(1)

    大家好!!!我叫霜华,是一个帅到没天理 骚里骚气,热爱人生与绿色 是一个不像程序员的程序员 作为一个在java这门领域沉迷一年半的人,如今在技术栈广度和深度 还是业务能力在客观层面讲确实进步迅速 (可 ...

  9. 面向对象编程思想概览(一)类和对象

    一.简介 生活中有许多技巧值得我们在程序设计中模仿和借鉴.采用类的思想可以方便地把具有相同属性和方法归为一类,从而简化编程.本讲利用生活的常见示例,浅显通俗的语言,生动地介绍了面向对象编程中类与对象的 ...

最新文章

  1. Boost::asio io_service 实现分析
  2. 软件测试中过度设计的那些事儿
  3. 福州大学数学专业matlab教材,福州大学MATLAB基础实验指导书
  4. python【蓝桥杯vip练习题库】ADV-104打水问题
  5. Sublime Text(2/3)编译lua
  6. 岗位推荐 | 京东AI研究院招聘计算机视觉算法实习生
  7. Android 精品资源(一) 2018年3月23日 星期五
  8. 认识伪类元素:before和:after
  9. pytorch-多GPU训练(单机多卡、多机多卡)
  10. 推荐:PHPCMS v9 安全防范教程!
  11. python3 redis长链接超时_Python3 连接Redis字符串和字节问题探究
  12. centos 7的systemctl
  13. 流媒体开发之-音悦台TV解析特定条件下的所有TV视频
  14. 好好编程-物流项目03【GitHub管理】
  15. 智能家居,在互联中看见全屋智能
  16. 【科创人】DCloud崔红保:uni-app和HBuilder背后的男人,让天下没有难做的开发
  17. 简述基于CPU的机器码运行过程
  18. linux远程win7无法连接wifi,苹果电脑win7系统连不上wifi热点深度纯净
  19. csdn格式字体、样式、排版
  20. 数字视频处理(五)——频率域陷波滤波

热门文章

  1. LinuxC高级编程——线程间同步
  2. html5+css3第一次作业_“台风爷爷,让我作业飞走!”南京小学生写的诗都这么逆天了?...
  3. qscrollarea 设置滚动位置_爱剪辑:影视剧滚动字幕片尾,效果竟然如此高端精美...
  4. LeetCode 2181. 合并零之间的节点(链表)
  5. LeetCode 2129. 将标题首字母大写
  6. LeetCode 758. 字符串中的加粗单词(Trie树)
  7. LeetCode 461. 汉明距离(异或^ 与)
  8. POJ 2287 田忌赛马(贪心)
  9. python为什么是蟒蛇_Python 为什么推荐蛇形命名法?
  10. vue路由切换组件没有加载_Vue面试题: 如何实现路由懒加载?