面向对象(2)
类=属性(名词)+方法(动词);
1,方法的定义
public 返回类型 方法名(){
//方法体
}
(1)方法的返回类型
a,无返回类型(注意:不能有return):void
b,有返回类型(注意:方法体最终一定要return对应的值)
基本类型:int,double,char,boolean,float…
引用类型:String,数组,对象
c,如果方法需要返回多个值
返回数组
返回对象
public class A{
double height;
double weight;
}
public A getInfo(){
A a=new A();
a.height=2.5;
a.weight=3.7;
return a;
}
(2)方法名
a,Java标示符组成
b,小写开头,逢单词首字母大写 ---------驼峰
c,尽量避免关键字:length(),next(),main()…
d,见名知意:run(),sleep(),eat()…
(3)方法体:main方法中的代码
2,方法的调用:对象名.方法名();
(1)有返回值
返回类型 变量=对象名.方法名();
public int aa(){…}
main(){
int i=对象.aa();
}
(2)无返回值
对象名.方法名();
(3)在同一个类中方法的相互调用
如果是自定义的方法,直接相互调用
如果main方法要调用自定义方法,通过:对象名.方法名();
(4)不同类中方法相互调用
对象名.方法名();
3,变量的作用域
(1)成员变量(属性):整个类 ,默认值
(2)局部变量(方法里):定义的方法 ,必须初始化。
4,带参数的方法
(1)定义方式:
public 返回类型 方法名(形式参数){
//方法体
}
形式参数格式:参数类型1 参数名称1,参数类型2 参数名称2,… 参数类型n 参数名称n
public void method(int x,int y,String str){
}
(2)调用方式
a,对象名.方法名(实际参数)
int i=1;
a.method(i,3,“hello”);
b,参数的类型、个数和顺序必须对应
a.method(3,“hello”); 错误
a.method(3,“hello”,4); 错误
备注:
1、带参数的方法的调用;
(1)传值调用:基本类型(int,float,char,double,boolean,long,short…String)的参数都会采用该方式传参
(2)传址调用: 引用类型(数组,对象,除String)的参数都会采用该方式传参。
5、练习;
需求;城市下有多给人
//人的类
public class Person{
String name;
public String toString(){
return name;
}
}
//城市类
public class City{
String name;
Person[]persons;
public String toString(){
String s=name+":";
for(int i =0;i<persons.length;i++){
if(i<persons.length-1){
//如果Person类没有返回值则 s+=persons[i].name+",";
//如果Person类有返回值则 s+=persons[i]+",";
s+=persons[i]+",";
}else{
s+=persons[i];
}
}
return s;
}
}
public class TestCity{
public static void main(String []args){
City c = new City();// 创建一个c的对象
c.name="西安"; //对象.属性
/*
Person[]array=new Person[3]; //创建一个类类型数组的对象
Person zs = new Person(); //创建一个Person类的对象zs并且给对象属性赋值
zs.name = "张三";
array[0] = zs;
Person lisi = new Person();
lisi.name = "李四";
array[1] = lisi;
Person ww = new Person();
ww.name = "王五";
array[2] = ww;
*/
Person[]array=new Person[5]; //创建一个类类型数组的对象,优化的代码,用循环来赋值。
String[]names={"张三","李四","王五","",""};
for(int i=0;i<array.length;i++){
Person p = new Person();
p.name=names[i];
array[i]=p;
}
c.persons = array;
System.out.println(c);
}
}