主要有:类,变量,方法
以上三种概念,都会在最左边有一个范围修饰符 public protected default private,具体含义放在最后解释
此外还有static abtract修饰符,位于public..后面,稍微复杂一点,暂时不做解释,以后单开一章介绍
一. 类 (Class)
为核心内容,是"对象"的基本单位
注意:一个类是对应"一种"对象,不是"一个"对象
举例:程序员
class ProgramYuan {
...
}
这里的ProgramYuan类,即对应"一种"自己定义的程序员类型,名字随便取
想要获得"一个"具体的程序员对象时,可以 ProgramYuan p1 = new ProgramYuan(); 如此新建一个类对于的"对象"
这个对象p1即为具体的某个程序员了
类为对象的基础单位,变量和方法都包含在内
二. 变量 (field)
可以理解为对象的某个"属性",主要组成为属性类型和属性名称,例如 String name; (public static等修饰符最后统一介绍)
上例中的程序员对象,我们就可以自己设计几个变量作为他的属性了
比如"身高","体重","恋爱情况","名字","收入"等等,根据实际需要设置
变量类型根据常理和需要设置,比如身高是有小数点的数字那就是float,恋爱情况为是或否就是boolean,名字是几个字那就是String等;
变量名字随便取,一般取文字意思的英文名,不会也可以用拼音= =不会影响运行
加上这些变量最后就变成
class ProgramYuan {
float shenGao;
float tiZhong;
boolean youNvPengYou;
String name;
int shouRu;
}
这样,我们就有一个稍微丰富点的类了
三. 方法
可以理解为某个对象的"功能",主要组成为返回值,方法名称,方法参数,方法主体
比如程序员,不光有一些身高等属性,同样还是有一些功能的,比如"找girl朋友","赚钱"等,同样根据实际需要创建方法
方法主要构成详解 结合下面例子说:
String getNvPengYouMingZi(boolean isNiCheng) {
String name = null;
if(isNiCheng) {
name = "xiaoBaoBei";
} else {
name = "laoZhang";
}
return name;
}
1.方法名称
getNvPengYouMingZi为方法名字,随便取
2.返回值
方法名左边的变量类型即为返回值,上例中的String就是.需要定义为一个类别,可以是int,String等等,代表方法返回的内容,
注意是类别,要写成String get****(); 不能是 "fanHuiZhi" get***()这样一个字符串具体数值
无返回内容时用特殊字符void,例如 void method() { ... }
有返回值时,需要在方法内进行return操作,下面4方法主体会进行介绍
3.方法参数
小括号()里的是方法参数,可以没有,也可以单个,多个~ 多个参数用逗号隔开,每个参数格式同样为:类型 名字
参数一般会在方法中即{}中引用使用,如上例中,可以看到参数isNiCheng在{}内的if判断中引用了
参数的意义可以理解为,方法的"条件", 比如例子中的获取girl朋友方法,我们添加了一个这样的"是否为昵称"的条件
这样可以为方法添加一定的灵活性,使得同一个方法,用不同值调用,会产生不同效果
4.方法主体
花括号{}里是方法的主体,即这个方法这个功能具体作用,逻辑代码if for 加减乘除赋值运算等都写在这里面
方法内部也可以申明设定一些变量,如上例中的String name
注意:方法内部的变量(称作局部变量)与类中的变量(称为成员变量)是有区别的
首先局部变量不能使用范围修饰符即public private等; 成员变量可以
其次,由于方法内部的局部变量只是存在于这一个方法{}中的,所以其他方法{}里是无法使用这个变量的;
而成员变量,在所有的方法里都可以使用的
例如:
class AClass {
String name = "hhhhh"; // 成员变量
void method1() {
String name1 = "haha";//局部变量
syso(name);//可以使用成员变量
syso(name1);//可以使用自己方法里的局部变量
}
void method2() {
String name2 = "hehe";//局部变量
syso(name);//可以使用成员变量
syso(name2);//可以使用自己方法里的局部变量
syso(name1);//错误,name1为method1方法里的局部变量,只有method1的{}里可以使用,其他方法内都不能使用
}
}
为什么两个方法都可以使用成员变量name呢,很好理解,每个{}里,成员互相之间是都可以"看见"的,也就是可以互相使用引用的,
所以 method1 method2 name三个都在AClass这个类的总{}里,方法{}包含在类的{}中,自然方法里也可以使用name这个成员变量了
而方法中的name1在method1的{}里, name2在method2的{}里,"平级"的不同{}之间肯定就不能看到不能使用了
返回值问题,方法有返回值时,方法主体内一定要进行return操作,且return的对象类型一定要和方法里写的类型一致
上例中String getNvPengYouMingZi方法, 最后就return了一个String类型的值"...",如果return 1;这样的一个数字,就会提示错误
无返回值时可以不return;
如果方法有返回值的话,在对象调用方法时,可以新建一个对应的参数保存之,例如
String nvPengYouName = programe.getNvPengYouMingZi(true); // programe为程序员新建出来的一个对象
特殊方法:main方法
当一个程序中的类运行时,里面可能有多个方法,那系统会先调用哪个呢?
java中,每个类都可以有一个特殊的方法,即main方法,这个方法就是程序启动时自动运行的方法了,
而其他方法需要在这个main方法中调用才可以
在用eclipse新建类时,直接勾选红框所示选项就会自动在类里创建一个main方法了,见下图1
综上,getNvPengYouMingZi这个方法具体功能就是:
"获取gril朋友的名字,如果获取昵称的话,那返回小baby,如果不用昵称的话就返回老张"
-------------------------------------------------------------------------------------------------
范围修饰符 public protected default private, 可以修饰类,变量,方法,放在最前面即最左边
public :能被所有的类(接口、成员)访问
protected:只能被本类、同一个包中的类访问;如果在其他包中被访问,则必须是该成员所属类的子类。
private:成员变量和方法都只能在定义它的类中被访问,其他类都访问不到。对成员变量的进行获取和更改,一般用get(),set() ,public 方法。实现了Java面向对象的封装思想。
default(也就是什么都不加):访问权限与protected相似,但修饰类成员时不同包中的子类不能访问
最常用的是public private
简而言之就是,public公共的,哪里都能看见都能用;private私有的,只有这个类的{}里能用
例如例子中的程序员类,可以看见变量和方法什么都不加,见下图2,即为default修饰,范围见上面介绍
同一个包下不同类之间引用参数使用方法等都没问题,见下图3
但是对于一个复杂的程序,往往会有多个package包,
如果两个类存在于不同包中时,则不可以互相使用了,见下图4
可以看到MainTest类在default包下,而程序员类在bean这个package包下,此时在MainTest中调用不同包下程序员类的某变量时,eclipse提示错误,因为不同包之间互相"看不到"了
我们点击错误行左边的那个橙色灯泡小按钮时可以看见推荐你两种修改方法,
第一种即为 Change visibility of "name" to "public"
即将"name"的可见性即范围修改为"public",这样程序就正确了, 修改后程序员类里的name变量就变成 public String name;
第二种推荐的解决方法Create getter and setter ...暂时不做介绍
private私有的,此修饰符修饰的方法和变量,都只能在所在类里使用
比如程序员类中的name如果改成 private String name; 那么除了ProgramYuan的{}中,其他类中都无法直接使用这个变量了
以上三种概念,都会在最左边有一个范围修饰符 public protected default private,具体含义放在最后解释
此外还有static abtract修饰符,位于public..后面,稍微复杂一点,暂时不做解释,以后单开一章介绍
一. 类 (Class)
为核心内容,是"对象"的基本单位
注意:一个类是对应"一种"对象,不是"一个"对象
举例:程序员
class ProgramYuan {
...
}
这里的ProgramYuan类,即对应"一种"自己定义的程序员类型,名字随便取
想要获得"一个"具体的程序员对象时,可以 ProgramYuan p1 = new ProgramYuan(); 如此新建一个类对于的"对象"
这个对象p1即为具体的某个程序员了
类为对象的基础单位,变量和方法都包含在内
二. 变量 (field)
可以理解为对象的某个"属性",主要组成为属性类型和属性名称,例如 String name; (public static等修饰符最后统一介绍)
上例中的程序员对象,我们就可以自己设计几个变量作为他的属性了
比如"身高","体重","恋爱情况","名字","收入"等等,根据实际需要设置
变量类型根据常理和需要设置,比如身高是有小数点的数字那就是float,恋爱情况为是或否就是boolean,名字是几个字那就是String等;
变量名字随便取,一般取文字意思的英文名,不会也可以用拼音= =不会影响运行
加上这些变量最后就变成
class ProgramYuan {
float shenGao;
float tiZhong;
boolean youNvPengYou;
String name;
int shouRu;
}
这样,我们就有一个稍微丰富点的类了
三. 方法
可以理解为某个对象的"功能",主要组成为返回值,方法名称,方法参数,方法主体
比如程序员,不光有一些身高等属性,同样还是有一些功能的,比如"找girl朋友","赚钱"等,同样根据实际需要创建方法
方法主要构成详解 结合下面例子说:
String getNvPengYouMingZi(boolean isNiCheng) {
String name = null;
if(isNiCheng) {
name = "xiaoBaoBei";
} else {
name = "laoZhang";
}
return name;
}
1.方法名称
getNvPengYouMingZi为方法名字,随便取
2.返回值
方法名左边的变量类型即为返回值,上例中的String就是.需要定义为一个类别,可以是int,String等等,代表方法返回的内容,
注意是类别,要写成String get****(); 不能是 "fanHuiZhi" get***()这样一个字符串具体数值
无返回内容时用特殊字符void,例如 void method() { ... }
有返回值时,需要在方法内进行return操作,下面4方法主体会进行介绍
3.方法参数
小括号()里的是方法参数,可以没有,也可以单个,多个~ 多个参数用逗号隔开,每个参数格式同样为:类型 名字
参数一般会在方法中即{}中引用使用,如上例中,可以看到参数isNiCheng在{}内的if判断中引用了
参数的意义可以理解为,方法的"条件", 比如例子中的获取girl朋友方法,我们添加了一个这样的"是否为昵称"的条件
这样可以为方法添加一定的灵活性,使得同一个方法,用不同值调用,会产生不同效果
4.方法主体
花括号{}里是方法的主体,即这个方法这个功能具体作用,逻辑代码if for 加减乘除赋值运算等都写在这里面
方法内部也可以申明设定一些变量,如上例中的String name
注意:方法内部的变量(称作局部变量)与类中的变量(称为成员变量)是有区别的
首先局部变量不能使用范围修饰符即public private等; 成员变量可以
其次,由于方法内部的局部变量只是存在于这一个方法{}中的,所以其他方法{}里是无法使用这个变量的;
而成员变量,在所有的方法里都可以使用的
例如:
class AClass {
String name = "hhhhh"; // 成员变量
void method1() {
String name1 = "haha";//局部变量
syso(name);//可以使用成员变量
syso(name1);//可以使用自己方法里的局部变量
}
void method2() {
String name2 = "hehe";//局部变量
syso(name);//可以使用成员变量
syso(name2);//可以使用自己方法里的局部变量
syso(name1);//错误,name1为method1方法里的局部变量,只有method1的{}里可以使用,其他方法内都不能使用
}
}
为什么两个方法都可以使用成员变量name呢,很好理解,每个{}里,成员互相之间是都可以"看见"的,也就是可以互相使用引用的,
所以 method1 method2 name三个都在AClass这个类的总{}里,方法{}包含在类的{}中,自然方法里也可以使用name这个成员变量了
而方法中的name1在method1的{}里, name2在method2的{}里,"平级"的不同{}之间肯定就不能看到不能使用了
返回值问题,方法有返回值时,方法主体内一定要进行return操作,且return的对象类型一定要和方法里写的类型一致
上例中String getNvPengYouMingZi方法, 最后就return了一个String类型的值"...",如果return 1;这样的一个数字,就会提示错误
无返回值时可以不return;
如果方法有返回值的话,在对象调用方法时,可以新建一个对应的参数保存之,例如
String nvPengYouName = programe.getNvPengYouMingZi(true); // programe为程序员新建出来的一个对象
特殊方法:main方法
当一个程序中的类运行时,里面可能有多个方法,那系统会先调用哪个呢?
java中,每个类都可以有一个特殊的方法,即main方法,这个方法就是程序启动时自动运行的方法了,
而其他方法需要在这个main方法中调用才可以
在用eclipse新建类时,直接勾选红框所示选项就会自动在类里创建一个main方法了,见下图1
综上,getNvPengYouMingZi这个方法具体功能就是:
"获取gril朋友的名字,如果获取昵称的话,那返回小baby,如果不用昵称的话就返回老张"
-------------------------------------------------------------------------------------------------
范围修饰符 public protected default private, 可以修饰类,变量,方法,放在最前面即最左边
public :能被所有的类(接口、成员)访问
protected:只能被本类、同一个包中的类访问;如果在其他包中被访问,则必须是该成员所属类的子类。
private:成员变量和方法都只能在定义它的类中被访问,其他类都访问不到。对成员变量的进行获取和更改,一般用get(),set() ,public 方法。实现了Java面向对象的封装思想。
default(也就是什么都不加):访问权限与protected相似,但修饰类成员时不同包中的子类不能访问
最常用的是public private
简而言之就是,public公共的,哪里都能看见都能用;private私有的,只有这个类的{}里能用
例如例子中的程序员类,可以看见变量和方法什么都不加,见下图2,即为default修饰,范围见上面介绍
同一个包下不同类之间引用参数使用方法等都没问题,见下图3
但是对于一个复杂的程序,往往会有多个package包,
如果两个类存在于不同包中时,则不可以互相使用了,见下图4
可以看到MainTest类在default包下,而程序员类在bean这个package包下,此时在MainTest中调用不同包下程序员类的某变量时,eclipse提示错误,因为不同包之间互相"看不到"了
我们点击错误行左边的那个橙色灯泡小按钮时可以看见推荐你两种修改方法,
第一种即为 Change visibility of "name" to "public"
即将"name"的可见性即范围修改为"public",这样程序就正确了, 修改后程序员类里的name变量就变成 public String name;
第二种推荐的解决方法Create getter and setter ...暂时不做介绍
private私有的,此修饰符修饰的方法和变量,都只能在所在类里使用
比如程序员类中的name如果改成 private String name; 那么除了ProgramYuan的{}中,其他类中都无法直接使用这个变量了