一、Java面向对象学习的三条主线:

1.Java类及类的成员:属性、方法、构造器;代码块、内部类

2.面向对象的三大特征:封装性、继承性、多态性。(抽象性)

3.其他关键字:this、super、static、final、abstract、interface、package、import等。

二、“人把大象装进冰箱”

1.面向过程:强调的时功能行为,以函数为最小单位,考虑怎么做。

2.面向对象:强调具备了功能的对象,以类/对象为最小单位,考虑谁来做。

三、面向对象的两个要素:

类:对一类事物的描述,是抽象的、概念上的定义

对象:是实际存在的该类事物的每个个体,因而也称为实例(interface)

二者关系:对象,是有类new出来的,派生出来的。

面向对象程序设计的重点是类的设计

设计类,就是设计类的成员。

属性 = 成员变量 = field = 域、字段

方法= 成员方法 = 函数 = method

创建类的对象 = 类的实例化 = 实例化类

四、面向对象思想落地的实现

1.创建类,设计类的成员

2.创建类的对象

3.通过“对象.属性”或“对象.方法”调用对象结构

属性(成员变量) vs 局部变量

1.相同点:

定义变量的格式:数据类型 变量名 = 变量值

先声明,后使用

变量都有其对应的作用域

2.不同点:

在类中声明的位置不同

属性:直接定义在类的一对{}内

局部变量:声明在方法内、方法形参、代码块内、构造器形参、构造器内部的变量

关于权限的修饰符不同

属性:可以在声明属性时,指明其权限,使用权限修饰符(private、public、缺省、protect等)

局部变量:不可以使用权限修饰符

默认初始化值的不同

属性:类的属性,根据其类型,都有默认初始化值。

整型(byte、short、int、long):0

浮点型(float、double):0.0

字符型(char):0(\u0000)

布尔型(boolean):false

引用数据类型(类、数组、接口):null

局部变量:没有默认初始化值,意味着我们在调用局部变量之前,一定要显示赋值。

特别的:形参在调用时,我们赋值即可。

在内存加载的位置不同

属性:加载到堆空间中(非static)

局部变量:加载到栈空间中

五、类中方法的声明和使用。

方法:描述类应该具有的功能

举个栗子

返回值类型:

如果方法有返回值,则必须在方法声明时,指定返回值的类型。同时方法中,需要使用return关键字来返回指定类型的变量或常量:“return 数据”

如果方法有返回值,则声明方法时,使用void来表示。通常,没有返回值的方法中,就不使用return。但是如果使用的化,只能“return;” 表示结束此方法的意思

形参列表:方法可以声明0个,1个,或多个形参。

格式:数据类型1 形参1,数据类型2 形参2,...

六、理解万事万物皆对象

1.在Java语言范畴中,我们都将功能、结构等封装到类中,通过类的实例化,来调用具体的功能结构

Scanner,string等

文件:File

网络资源:URL

2.涉及到Java语言与前端Html、后端的数据库交互时,前后端的结构在Java层面交互时,都体现为类、对象

七、内存解析的说明

引用类型的变量,只能储存两类值:null 或 地址值(含变量的类型)

八、匿名对象的使用

1.理解:我们创建的对象,没有显式的赋给一个变量名。即为匿名对象

2.特征:匿名对象只能调用一次

九、方法的重载

1.定义:在同一个类中,允许存在一个以上的同名方法,只要他们的参数个数或者参数类型不同即可。

2.如:Arrays类中重载的sort()/binarySearch()

方法名:---> 重载列表

3.可变个数形参的方法

1.jdk 5.0新增的内容

2.具体使用:

可变个数形参的格式:数据类型 ... 变量名

当调用可变个数形参的方法时,传入的参数可以是0个到多个。

当可变个数形参的方式与本类中的方法名相同,形参不同的方法之间构成重载

当可变个数形参的方式与本类中的方法名相同,形参类型也相同的数组不能构成重载,二者不共存

可变个数形参在方法的形参中,必须声明在末尾,最多只能声明一个可变形参。

十、方法参数的值传递机制

关于变量的赋值:

如果变量是基本数据类型,此时赋值的是变量所保存的数据值。

如果变量是引用数据类型,此时赋值的是变量所保存的数据的地址值。

方法的形参的传递机制:值传递

形参:方法定义时,声明的小括号内的参数

实参:方法调用时,实际传递给形参的数据

值传递机制:

如果参数是基本数据类型,此时实参赋给形参的是实参真实存储的数据值。

如果参数是引用数据类型,此时实参赋给形参的是实参真实存储的数据的地址值。

十一、递归方法

递归方法:一个方法体内调用它自身

方法递归包含了一种隐式的循环,它会重复执行某段代码,但这种重复执行无需循环控制。

public int getSum(int n) { //计算1-n之间所有自然数的乘积

    if (n == 1) {
return 1;
} else {
return n * getSum(n - 1);
}
}

重新梳理IT知识之java-05面向对象(一)的更多相关文章

  1. JAVA的面向对象编程

    JAVA的面向对象编程 面向对象主要针对面向过程. 面向过程的基本单元是函数. 什么是对象:EVERYTHING IS OBJECT(万物皆对象) 全部的事物都有两个方面: 有什么(属性):用来描写叙 ...

  2. Java开发知识之Java的枚举

    Java开发知识之Java的枚举 一丶什么是枚举 枚举可以理解为就是常量,在Java中我们定义常量.都是用 final语句. C++中都是用const关键字. 枚举跟C++概念都是一样的.就是特定的常 ...

  3. 第二十七节:Java基础面向对象-静态,单例模式,继承详情知识点

    前言 Java基础面向对象-静态,单例模式,继承详情知识点.静态-static关键字,static变量,静态代码块,代码块(不加静态),对象创建过程,单例模式,继承. 静态-static关键字 // ...

  4. Java :面向对象

    Java :面向对象 直面Java 第001期 什么是面向过程 面向过程是以函数为中心,要解决一个问题,需要把问题分解为一个个的步骤,然后定义一系列的流程,用特定的输入经过函数的处理,最终输出特定的结 ...

  5. java的面向对象

    Java是1995年诞生.前身oak,后来改名为java. 面向对象的编程思想:对象是万事万物. 对象是由两部分组成的:属性和方法 1:属性是对象的静态特性(名词) 2:方法是对象的动态特性(动词) ...

  6. (Java)《head first java》值得Java或面向对象基础的新手看。

    看完这本书后本人收获良多. 内容对Java以及面向对象的入门者非常友好. 抽象的内容惯用图解的方法来剖析,通俗易懂 之前看C#入门经典的面向对象时,依然浓浓的一头雾水. (1)很不解为何实例化要写成A ...

  7. java学习面向对象之异常之一

    一.异常的概述: 什么是异常?在我们编写java程序的时候,会出现一些问题,比如内存溢出啊或者数组索引超出最大索引啊,这些编程当中出现的这些个问题就是异常.但是异常也分为可以处理的和不可以处理的.比如 ...

  8. Java之面向对象相关问题集

    面向对象的特征有哪些方面  1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面.抽象并不打算了解所有问题,而仅仅是选择当中的一部分,临时不用部分细节. 抽 ...

  9. Java与面向对象

    一.面向过程的思想和面向对象的思想 面向对象和面向过程的思想有着本质上的区别, 作为面向对象的思维来说,当你拿到一个问题时,你分析这个问题不再是第一步先做什么,第二步再做什么,这是面向过程的思维,你应 ...

  10. java基础面向对象之类与对象

    java基础面向对象之类与对象 2017-01-14 1.面向对象的基本概念 以一种组建化的形式进行代码设计 1)在面向对象程序设计中包含有如下几种特性 •封装性:保护内部结构的安全性 •继承性:在已 ...

随机推荐

  1. Python实现求多个集合之间的并集

    目的:求多个集合之前的并集,例如:现有四个集合C1 = {11, 22, 13, 14}.C2  = {11, 32, 23, 14, 35}.C3 = {11, 22, 38}.C4 = {11,  ...

  2. Codeforces Round #622 (Div. 2)C(单调栈,DP)

    构造出的结果一定是一个单峰/\这种样子的 #define HAVE_STRUCT_TIMESPEC #include<bits/stdc++.h> using namespace std; ...

  3. EF的预先加载--Eager Loading

    预先加载 在对一种类型的实体进行查询时,将相关的实体作为查询的一部分一起加载.预先加载可以使用Include()方法实现. 在此需要说明的是:EF中有两种表关联的方法,一种是Join()方法,一种是I ...

  4. jdk8-》日期时间及其格式处理类特性

    一.JDK8之时间⽇期处理类 核⼼类: LocalDate:不包含具体时间的⽇期. LocalTime:不含⽇期的时间. LocalDateTime:包含了⽇期及时间. LocalDate 常⽤API ...

  5. Java多线程wait和notify协作,按序打印abc

    有一个经典的多线程面试题:启三个线程,按序打印ABC 上代码: package cn.javaBase.study_thread1; class MyRunnable1 implements Runn ...

  6. Python爬取微博热搜以及链接

    基本操作,不再详述 直接贴源码(根据当前时间创建文件): import requests from bs4 import BeautifulSoup import time def input_to_ ...

  7. 牛客多校第二场H Second Large Rectangle 单调栈or悬线法

    Second Large Rectangle 题意 给出n*m的01矩阵,问由1组成的第二大的矩阵的大小是多少? 分析 单调栈(or 悬线法)入门题 单调栈 预处理出每一个点的最大高度,然后单调栈每一 ...

  8. Python的深拷贝、浅拷贝

    浅拷贝 定义:浅拷贝只是对另外一个变量的内存地址的拷贝,这两个变量指向同一个内存地址的变量值. 浅拷贝的特点: 公用一个值: 这两个变量的内存地址一样: 对其中一个变量的值改变,另外一个变量的值也会改 ...

  9. Excel 不同文件、sheet 关联引用(vlookup函数)

    有时候在excel办公中会遇到,两个sheet相同的一列数据,作为关联(就像数据库的表的外键),其中一个sheet想要获取另一个sheet的其他列数据,这样就用到了vlookup函数,下面演示一下: ...

  10. JavaScript.Array.some() 方法用法

    定义和用法:some() 方法用于检测数组中的元素是否满足指定条件(函数提供). some() 方法会依次执行数组的每个元素: 如果有一个元素满足条件,则表达式返回true , 剩余的元素不会再执行检 ...