java编写类 属性和方法_Java学习day8面向对象编程2-类的属性和方法

一、类的属性

1.语法格式

修饰符 类型 属性名 = 初值

说明:修饰符private:该属性只能由该类的方法使用。在同一类内可见。使用对象:变量、方法。 注意:不能修饰类(外部类)

修饰符public:该属性可以被该类以外的方法访问。对所有类可见。使用对象:类、接口、变量、方法

类型:任何基本类型,如int、boolean或任何类

补充:修饰符可以用来修饰变量,可以指明变量是公有还是私有,私有的变量不能通过 对象.属性 的方式调用

2.变量的分类:

1.成员变量:在方法体外,类体内,声明的变量称为成员变量

成员变量包括:1.实例变量(不以static修饰)

2.类变量(以static修饰)

2.局部变量:在方法体内部声明的变量称为局部变量

局部变量包括:1.形参(方法签名中定义的变量)

2.方法局部变量(在方法内定义的变量)

3.代码块局部变量(在代码块内定义的变量)

实例:

public classPerson{public String name = "赵云";//public:公有的,这样的类不仅可以在本类的方法中使用,也可以在类的外部使用

private int age;//private:私有的,只可以在本类方法中使用,不可以在类的外部使用//以上变量为实例变量,就是指在类实例化成对象之后才能使用的变量

public static String sex = "男";//static:静态的,这样的变量叫做类变量,不需要实例化成对象就可以使用。(可以通过 类名.属性 直接调用)

public voidshowAge(){

System.out.println(age);

}

}

3.成员变量和局部变量的区别

成员变量:1.成员变量定义在类中,在整个类中都可以被访问。

2.成员变量分为类成员变量和实例成员变量,实例成员变量只存在于对象所在的堆內存中(实例变量只能是在类实例化后的对象中可以使用)。

3.成员变量有默认初始值。

4.成员变量的权限修饰符可以根据需要任意选一个(private public 或 protected)。

局部变量:1.局部变量只定义在局部范围内,如方法内,代码块内等等(局部变量只能在它所属的方法的范围内可以使用)。

2.局部变量存在于栈内存中。作用的范围结束,变量空间会自动释放。

3.局部变量没有默认初始化值,每次必须显式初始化。

4.局部变量声明时不指定权限修饰符

二、类的方法

1.语法格式:

修饰符 返回值类型 方法名(参数列表){

方法体语句;

}

说明:1.没有返回值,用void

2.有返回值,用具体的返回值类型,例如方法上定义的int是返回值的类型,return后面跟的是方法的返回值

实例:

public classPerson{private intage;public int getAge(){//声明方法getAge

returnage;

}public void setAge(int i){//声明方法setAge

age = i;//将参数i的值赋给类的成员变量age

}

}

三、关于方法

1.什么是方法(函数)?

方法是类或对象行为特征的抽象,也称为函数。Java中的方法不能独立存在,所有的方法必须定义在类里。

2.语法格式:

修饰符 返回值类型 方法名(参数类型 形参1,参数类型 形参2,...){

程序代码

return返回值;

}

其中: 形式参数:在方法被调用时用于接收外部传入的数据的变量。(方法的参数可以有多个)

参数类型:就是该形式参数的数据类型。

返回值:方法在执行完毕后返还给调用它的程序的数据。

返回值类型:方法要返回的结果的数据类型。

实参:调用方法时实际传给函数形式参数的数据。

3.方法的调用

方法只有被调用,才会被执行,方法调用的分析过程为:

32f23423f341f60b078882d6eba69248.png

注意:1.没有具体返回值的情况,返回值类型用关键字void表示,那么该函数中的return语句如果在最后一行可以省略不写。

2.定义方法时,方法的结果应该返回给调用者,交由调用者处理。

3.在同一个类中,所有的方法都可以直接相互调用,不用new去实例化对象。

4.方法中只能调用方法,不可以在方法内部定义方法。

4.方法的重载(overload)

重载(overload):指在一个类中,允许存在一个以上的同名方法,只要它们的参数个数或者参数类型不同即可。

例如:

//多个相同名称的方法如果想在一个类中共存,那么这些同名方法一定是参数的个数或者参数的数据类型不一样

public int add(int x, inty){return x +y;

}public double add(int x, double y){//参数类型不同

return x +y;

}public int add(int x, int y, int z){//参数个数不同

return x + y +z;

}public double add(double y, int x){//与2比,顺序不同,但也是参数类型不同

return x +y;

}

重载的特点:与返回值类型无关,只看参数列表,且参数列表必须不同(参数个数或参数类型不同)。(例如:public double add( int x,  int y)与public int add (int x, int y) 不构成重载)

调用时,根据方法参数列表的不同来区别

实例:编写程序,定义三个重载方法并调用。方法名为mOL。要求:三个方法分别接收一个int参数、两个int参数、一个字符串参数,分别执行平方运算并输出结果,相乘并输出结果,输出字符串信息,并在主类的main()方法中分别用参数区别调用三个方法。

public classTest{public static voidmain(String args[]){

Test t= newTest();

t.mOL(2);

t.mOL(2,3);

t.mOL("重载方法mOL");

}public void mOL(inti){

System.out.println(i* i *i);

}public void mOL(int x, inty){

System.out.println(x*y);

}public voidmOL(String s){

System.out.println(s);

}

}

打印结果:

7bc9f58bb232c5ccf10467aa84d5e8ac.png

实例:定义三个重载的方法max(),第一个方法求两个int值中的最大值,第二个方法求两个double值中的追大值,第三个方法求三个double值中的最大值,并分别调用三个方法。

public classTest{public static voidmain(String args[]){

Test t= newTest();

t.max(1, 2);

t.max(1.3, 1.4);

t.max(1.5, 16, 0.17);

}public void max(int x, inty){if(x >y){

System.out.println("最大值是:" +x);

}else{

System.out.println("最大值是:" +y);

}

}public void max(double x, doubley){double res = 0;if(x >y){

res=x;

}else{

res=y;

}

System.out.println("最大值是:" +res);

}public void max(double a, double b, doublec){double res = 0;if(a >b){if(a >c){

res=a;

}else{

res=c;

}

}else{if(b >c){

res=b;

}

}

System.out.println("最大值是:" +res);

}

}

打印结果

dab4aec4e2f6c600f6d0a5d72114971d.png


版权声明:本文为weixin_33543395原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。