java类和方法_Java类和对象(方法)

一、Java类中方法的表现形式及其基本特征

Java类中方法是为了描述具有共同性质的一组数物的基本功能/行为。

Java类中方法的表现形式

1. 实例方法

实例方法格式:

访问限制修饰符 方法的返回值数据类型 方法的名称(参数列表){方法体}

1. 访问限制修饰符—public 缺省的

2. 方法的返回值数据类型

返回值-----方法执行结果

数据类型—基本数据类型【复合数据类型】

有返回值—方法体中的最后一句话是“return”,方法的返回值数据类型一定是结果值的具体数据类型

没有返回值—方法体中的没有“return”,方法的返回值数据类型void代替。

3. 方法的名称—合法的标识符【首字母小写,从第二个单词开始首字母大写】

4. 参数列表

参数----引入本方法以外的数据进入本方法进行运算【找帮手】局部变量

列表----可以有多个

没有参数的时候–()中的内容是空的

5. 方法体–方法的身体【具体执行代码】

例如:

public void test1(){ } --- 没有返回值,没有参数的实例方法

public int test2(){ return 12;}---返回值为int,没有参数的实例方法

public void test3(int a){ } ---- 没有返回值,有参数1个int型参数的实例方法

public String test4(UserBean user){ return “hello”;}---返回值为String的,有一个UserBean参数的实例方法。

public Student test5(UserBean user,int num,char value){ return null;}

2. 静态方法

实例方法的访问限制修饰符后面加上static关键字的方法就是静态方法【类方法】

没有static关键字的方法就是实例方法

静态方法格式:

访问限制修饰符 static 方法的返回值数据类型 方法的名称(参数列表){方法体}

例如:

public static void test1(){ } --- 没有返回值,没有参数的静态方法【类方法】

public static int test2(){ return 12;}---返回值为int,没有参数的静态方法【类方法】

public static void test3(int a){ } ---- 没有返回值,有参数1个int型参数的静态方法【类方法】

public static String test4(UserBean user){ return “hello”;}---返回值为String的,有一个UserBean参数的静态方法【类方法】。

public static Student test5(UserBean user,int num,char value){ return null;}

3. 构造方法

实例方法格式中去掉方法的返回值数据类型,方法的名称是类名这种方法就叫构造方法。

构造方法格式:

访问限制修饰符 类名(参数列表){方法体}

例如:

public class Person{

public Person(){ } --- 无参数的构造方法

public Person(int num){ } --- 有一个int型参数的构造方法

public Person(UserBean user){ } ---有一个UserBean 型参数的构造方法

public Person(UserBean user,int num,char value){}

}

构造方法作用就是将来为了创建对象用的。

当一个类创建好以后,会有一个默认的无参数构造方法存在,只是没有显式写出罢了。

当这个类中出现一个有参数的构造方法时,我们就需要将这个默认的无参数构造方法

显式写出,如果没有显式写出这个默认的无参数构造方法,那么这个默认的无参数构造方法将会被有参数的构造方法覆盖。

public class Student{

//存在一个默认的无参数构造方法

public Student(){}

public Student(String name){}

}

二、方法重载

在同一个类中方法的名称相同,参数不一样,这种现象就叫方法重载。

注意:方法重载与方法的返回值类型没有关系

例如:

public class UserBean{

public void test1(){}

public int test1(int num){return 0;}

}

参数不一样—先看个数,后看类型

例如:

public class UserBean{

public void test1(int num){}

public int test1(int num1 ,double num2){return 0;} // int double

public int test1(double num2,int num1 ){return 0;} // double int

}

构造方法、实例方法、静态方法都是可以重载的

三、同一个Java类中方法与变量的调用关系

在用一个类中:

构造方法中可以访问实例变量/类变量/局部变量

构造方法中访问实例变量默认this.实例变量,this可以被省略。

构造方法中访问类变量默认类名.实例变量,也可以this.类变量,类名/this可以被省略

构造方法中访问局部变量直接变量名称

实例方法中可以访问实例变量/类变量/局部变量

实例方法中访问实例变量默认this.实例变量,this可以被省略。

实例方法中访问类变量默认类名.实例变量,也可以this.类变量,类名/this可以被省略

实例方法中访问局部变量直接变量名称

静态方法中可以访问类变量/局部变量,不可以访问实例变量

静态方法中访问类变量默认类名.类变量,类名可以被省略

静态方法中不能有this

静态方法中访问局部变量直接变量名称

为什么静态方法中不可以访问实例变量变量?

静态方法内存分配时机早于实例变量的内存分配时机,静态方法访问实例变量的时候,实例变量是不存在。

public class Person{

public int perid=1001;//实例变量

public static String pername="zhangsan";//类变量

//构造方法中可以访问实例变量/类变量/局部变量

public Person(){

char sex='男';//局部变量

//构造方法中访问实例变量默认this.实例变量,this.可以被省略

System.out.println("构造方法中访问实例变量有this.===="+this.perid);

System.out.println("构造方法中访问实例变量没有this.===="+perid);

//构造方法中访问类变量默认类名.实例变量,也可以this.类变量,类名./this.可以被省略

System.out.println("构造方法中访问类变量有this.===="+this.pername);

System.out.println("构造方法中访问类变量有类名.===="+Person.pername);

System.out.println("构造方法中访问类变量没有类名./this.===="+pername);

//构造方法中访问局部变量直接变量名称

System.out.println("构造方法中访问局部变量===="+sex);

}

//实例方法中可以访问实例变量/类变量/局部变量

public void testMehodl(){

char sex='男';//局部变量

//实例方法中访问实例变量默认this.实例变量,this可以被省略。

System.out.println("实例方法中访问实例变量有this.===="+this.perid);

System.out.println("实例方法中访问实例变量没有this.===="+perid);

//实例方法中访问类变量默认类名.实例变量,也可以this.类变量,类名/this可以被省略

System.out.println("实例方法中访问类变量有this.===="+this.pername);

System.out.println("实例方法中访问类变量有类名.===="+Person.pername);

System.out.println("实例方法中访问类变量没有类名./this.===="+pername);

//实例方法中访问局部变量直接变量名称

System.out.println("实例方法中访问局部变量===="+sex);

}

//静态方法中不可以访问实例变量变量

//静态方法中不能有this.

//静态方法中可以访问类变量/局部变量

public static void testStaticMehtod(){

char sex='男';//局部变量

//System.out.println("静态方法中访问实例变量有this.===="+this.perid);

//System.out.println("静态方法中访问实例变量没有this.===="+perid);

//静态方法中访问类变量默认类名.实例变量,类名可以被省略

//System.out.println("静态方法中访问实例变量有this.===="+this.perid);

System.out.println("静态方法中访问类变量有类名.===="+Person.pername);

System.out.println("静态方法中访问类变量没有类名.===="+pername);

//静态方法中访问局部变量直接变量名称

System.out.println("静态方法中访问局部变量===="+sex);

}

}

public class TeseMain{

public static void main(String args[]){

Person per1=new Person();

per1.testMehodl();

per1.testStaticMehtod();

}

}

运行结果

a760c61f30945f03cedbb13d704877c3.png

四、同一个Java类中方法与方法的调用关系

在用一个类中:

构造方法中可以访问其他的构造方法/实例方法/类方法

构造方法中访问其他的构造方法new 其他的构造方法;

构造方法中访问实例方法默认this.实例方法,this可以被省略

构造方法中访问类方法默认类名.类方法,也可以this.类方法,类名/this可以省略

实例方法中可以访问构造方法/其他实例方法/类方法

实例方法中访问构造方法默认new 构造方法

实例方法中访问其他实例方法默认this.其他实例方法,this可以被省略

实例方法中访问类方法默认类名.类方法,也可以this.类方法,类名/this可以省略

静态方法中可以访问构造方法/其他的静态方法,不可以访问实例方法

静态方法中访问构造方法new 构造方法

静态方法中不能有this

静态方法中访问类方法默认类名.类方法,类名可以省略

public class Person{

public Person(){

System.out.println("构造方法");

}

public void student(){

System.out.println("实例方法");

}

public static void stuSta(){

System.out.println("静态方法");

}

//构造方法中可以访问其他的构造方法/实例方法/类方法

public Person(int ag){

new Person();

this.student();

student();

Person.stuSta();

this.stuSta();

stuSta();

}

//实例方法中可以访问构造方法/其他实例方法/类方法

public void stuStatic(){

new Person();

this.student();

student();

Person.stuSta();

this.stuSta();

stuSta();

}

//静态方法中可以访问构造方法/其他的静态方法,不可以访问实例方法

public static void stuStal(){

new Person();

//student();//不可以访问实例方法

//this.stuSta();//静态方法中不能有this

Person.stuSta();

stuSta();

}

}

public class DiaoYong{

public static void main(String args[]){

Person per1=new Person(4);

per1.stuStatic();

per1.stuStal();

}

}

运行结果:

8dcc3270d6acc6f9e5f219f93a3a8df0.png

总结

bdf5262ed6b73e41d8d0e6dbe088480e.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值