方法、面向对象

方法
即功能,封装了一段逻辑代码。
方法的定义:
固定语法
修饰词 返回值类型 方法名(形式参数){
逻辑代码
}
方法的位置
在类体中,与main方法是并列关系,类体中可以有
多个方法。

修饰词
(1)public–公共的
(2)protected–受保护的
(3)private –私有的
也可以不写修饰词,即默认的(default)
static修饰词可以与上述三个连用
返回值类型
(1) void—无返回值类型
(2)java语言的任意一种类型
可以是基本数据类型,也可以是引用数据类型
方法名
命名时尽量做到见名知意,驼峰命名法,
首字母小写
形式参数
用于接收调用者传入的数据。
与变量的声明语法相同。
关键字return:
作用1:结束方法逻辑
作用2:如果返回值类型标记的是java语言类型的
某一个类型名,那么return关键字后
必须跟着一个 此类型的数据或变量。
当方法有返回值类型时,return关键字后的数据
就是此方法要返回的数据。返回给调用者。
如:
int num = Math.random();
方法random()返回一个数据给main方法。
main方法存入num变量中
如:
reg1:
public static void sum(){
int a = 3;
int b = 5;
System.out.println(a+b);
[return;]—返回值类型处写void时,return可有可无;
}
reg2: 计算两个整数a和b的和
public static void sum(int a,int b){
int sum = a+b;
System.out.println(sum);
}

PS: 方法定义期间,就是制定逻辑流程模板。

reg3:
public static int sum(){
int a = 3;
int b = 5;
int sum = a+b;
return sum;
}
reg4:
public static int sum(int a,int b){
int sum = a + b;
return sum*3;
}

方法的调用,即使用
reg1如何使用:
main(String[] args){
sum();
}
reg2如何使用:
main(String[] args){
/*
调用者main 在使用sum(int a,int b)时
需要给形式参数赋值,赋的值叫实际参数
*/
int x = 1;
int y = 2;
sum(x,y);
}
reg3如何使用
main(String[] args){
int n = sum();
}
reg4如何使用
main(String[] args){
int m = 10;
int n = 20;
int s = sum(m,n);
}

总结
调用方法时:
无返回值时:
方法名(有参就传参);
有返回值时:
返回值类型 变量=方法名(有参就传参);
eclipse(日食):
是eclipse基金会提供的一款集成开发环境(IDE)。
也是一款绿色免安装,免费的开发工具。
使用前,需要JDK开发环境。
其他开发工具如:myeclipse,ideas,netBean,JBiulder

使用步骤:
(1)新建项目
File–>new–>java Project–name–>finish
(2)新建包(package)
命名规则
域名后缀.域名.项目名.模块名
src–>new–>package–name–finish
(3)创建源文件(.java)
选中包–>new–>class–name–finish
补全键: alt+ ?
main方法的快捷方式
main+补全键
syso+补全键
要有ctrl + s 保存 的习惯
方法内:
引用数据类型与基本数据类型的区别:
引用数据类型的数据,称之为对象,存储在内存中
某一个特定区域,即:堆
引用类型的变量也存储在内存中的一个特定区域,
即:栈
引用类型的变量存储的内容 不是对象,而是对象在堆空
间的位置信息

基本数据类型的数据,不叫对象。
基本数据类型的变量,存在栈里,存储的内容是基本类型
的数据。
面向对象
概述:java编程语言是纯粹的面向对象思想的语言。

现在程序开发有两个主流的方法:
(1)结构化程序设计,也叫面向过程程序设计
结构化程序设计主张以功能/步骤来进行软件设计。
如在解决问题时,主要是思考的是解决问题的步骤思路:
方法、面向对象_第1张图片
围棋游戏:
1.游戏开始,2,黑棋执行,3,绘制图片,4,判断输赢,
5,白棋执行,6,绘制图片,7,判断输赢,8,返回2.
9,游戏结束
结构化程序设计是以函数为程序单元 ,从一个函数开始,调用其他
普通函数,进行一些数据处理,一直调用下去。
设计思想:自顶而下,逐步精分,模块化

此种方式的编程语言有C,Basic,Pascal
(2)面向对象程序设计
面向对象编程思想逐渐成熟起来。
它使用类,对象,继承,封装,消息等概念来进行程序设计。
主要从现实世界的客观事物(即对象)出发来进行开发软件系统,
尽可能的运用人的自然思维方法 ,从客观事物来思考问题,
认识问题。 从这些事物的本质特点,来抽象出系统所需要的类, 作为程序的基本单元。
围棋游戏:
黑白棋子及其行为,棋盘, 输赢规则
类是面向对象编程的基本单元,类含有一类事物的共同特征,
类可以产生多个对象,这些对象构成了程序中所需要的数据。
方法、面向对象_第2张图片
从图中我们可以看出,软件系统是由多个类组成的。
类是一类事物的抽象体现,而这些事物都有一些状态数据。
即Field ,如,人,有身高,体重,姓名,性别,爱好等(
程序设计时,只关心业务所需要的数据
)

Field,我们称之为成员变量,有些资料称之字段,也有些资料
称之为属性,java有property关键字 是属性的。
类除了封装了一些事物的状态数据外,还提供了操作这些状态数据的
方法(Method),实现逻辑。
从上述内容可以总结出
成员变量(状态数据)+方法(行为)定义=类的定义

此类方法的编程语言:C++,java,C#, Ruby
==================================
完成一个“猪八戒吃西瓜”这样的逻辑
面向过程: 函数吃 是核心
吃(猪八戒,西瓜)
面向对象: 一类事物的一个:猪八戒,吃是猪八戒的行为
一类事物的一个:西瓜
猪八戒.吃(西瓜)

组装电脑:
如果是主板,硬盘,内存条这样的大件,容易组装
—面向对象
如果是二极管,三极管,电路板这样的小件进行组装,
很难 —面向过程

面向对象要比面向过程的粒度要大,相对来说容易,简单。
面向过程要比面向对象的性能要高,因为面向对象要进行对象的实例化,
比较吃内存,吃性能。

===========================================
抽象数据类型:用一堆不同类型的状态数据来描述的一种新的事物。

reg: 描述电脑,
颜色, 尺寸, 型号, 主板, 内存, 硬盘,显卡
0xFF00FF 15.6 thinkpadT460 华硕 三星 希捷 , inter
0xFF00FF 15.6 lenovoE40 三星 三星 西数 , inter
这些事物的共同行为:
办公
playGame
play
用状态数据(成员变量)总结一类事物的共同特征,
用方法总结一类事物的共同行为。
类的定义: =成员变量+方法
格式语法:
修饰词 class 类名{
type field1;
type field2;
…..
修饰词 返回值类型 method1(形参){}
修饰词 返回值类型 method2(形参){}
…..
}
定义一个类型:Person
成员变量(状态数据-共同特征):
name,gender,age,birth,idcard,isMarry
方法(行为)
eat()
sleep()
work()
sport()

对象:类的实例化,即类中的个体
如何创建对象:使用关键字new
类名 引用变量 = new 类名();

引用变量,简称引用,存储的是对象的地址信息

成员变量的调用
引用.成员变量名
方法的调用
引用.方法名(有参传参)

类与对象的关系:
类是对象的模板,对象是类的实例化

内存管理机制:
jvm将其管理的内存分成三大主要区域:方法区,堆,栈
方法区:当程序运行时,将所需要的class文件(类的信息)加载到此区间
堆: 用于存储引用类型所产生的对象,如果对象有成员变量,会给成员变量分配空间
栈:方法内的变量(局部变量)是在栈中开辟的
方法、面向对象_第3张图片
方法、面向对象_第4张图片

基本类型的变量与引用类型的变量:

值传递:
基本数据类型的变量里存储的是基本类型的数据,
int a = 5;
int b = a;//将a里的5复制了一份,传递给了b

址传递:
引用类型的变量里存储的是对象的地址信息
Car c = new Car();
Car d = c;//将c里的地址信息复制了一份,传递给了d

空指针异常:
java.lang.NullPointerException
在程序运行时,可能会出现此异常,出现的原因:
Car c = new Car();
System.out.println(c.color);//0
Car c = null;
System.out.println(c.color);//就会出现空指针异常

null:是引用类型的默认值

你可能感兴趣的:(方法、面向对象)