面向对象语言
面向对象语言是学习Java中尤其重要的一部分,面向对象语言与面向过程语言不同的是面向对象语言能够清楚地指定是“谁”具有这项行为,通俗理解就是“谁做了什么事”,“谁”的本质实际上就是对象,在面向对象语言中一切围绕对象来写。
在学习面向对象语言过程中,一个简单的理念就是:在需要完成某个任务时,首先要想到谁去完成任务(也就是 哪个对象去完成任务)。
面向对象编程主要有三大特性:
1、封装性:就是将数据和对数据的操作封装在一起,通过抽象从具体的实例中抽取出共同的性质形成一般的概念。(程序的设计追求“高内聚,低耦合”)
2、继承:继承是类与类之间的一种关系
3、多态:即同一方法可以根据对象的不同而采用多种不同的行为方式
类
类是用来创建对象的模板,它包含被创建对象的状态描述和行为的定义
类的声明
class 类名{
类体的内容
}
class为关键字,用来定义类,“class 类名”是类的声明部分,类名必须是合法的Java标识符!
类体
定义类的目的是抽象出一类事物共有的属性和行为
因此类体的内容由以下两部分构成:
(1)变量的声明:体现对象的属性
(2)方法的定义:方法可以对类中声明的变量进行操作,即给出算法行为(体现对象具有的行为)
package CsdnMethod;
public class A {
int c; //变量声明
int d; //变量声明
int sum;//变量声明
public int way01(){ //定义方法
sum = c+d;
return sum;
}
}
成员变量
public class A {
int c; //变量声明
int d; //变量声明
int sum;//变量声明
//在声明成员变量时如果没有指定初始值,Java编译器会为其指定默认值
/*
对于boolean变量,默认值是false
对于byte、short、int、long变量,默认值是0
对于char变量,默认值是 '\0'(空字符)
对于float和double变量,默认值是0.0
对于引用变量(数组及对象),默认值是 null
*/
public int way01(){ //定义方法
sum = c+d;
return sum;
}
}
此时c,d,sum三个为A类中的成员变量
成员变量在整个类的所有方法里都有效,其有效性与它在类体中出现的位置无关
不过通常习惯先介绍属性再介绍行为
方法
前面进行了初步的简单介绍CSDN
方法头:
分为无参数方法头和有参数方法头
public int way01() { //无参数的方法头
return 23;
}
public int way02(int m,int n){ //有参数的方法头
sum = m+n;
return sum;
}
方法体:
方法体的内容包括局部变量的声明和Java语句
可以在方法体内对成员变量和方法体中声明的局部变量进行操作
public static int add(int a){ //参数变量 a 也是局部变量!
int sum = 0; //声明局部变量sum
for (int i = 0; i < a; i++) {
sum += i;
}
return 0;
}
和类的成员变量不同的是,局部变量只在方法体内有效!
public class Demo1 {
int n = 10; //成员变量n
public void function(){
int c = 20; //局部变量
int sum = 100; //局部变量
int res1 = sum+n; //可以通过编译
}
int res2 = n+c; //编译报错,c为局部变量,只能在方法内有效
}
注意:若局部变量的名字与成员变量的名字相同,那么成员变量被隐藏,该成员变量在该方法内暂时失效
public class Demo2 {
int x = 10;
public static int text(){
int x = 0;
int y = 15;
y = x+y;
return y; //结果为15 不为25
}
}
切记:局部变量没有默认值,成员变量有默认值