类和对象(2)

4.7.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){  } ---- 没有返回值,有参数1int型参数的实例方法
public   String test4(UserBean user){  return “hello”;}---返回值为String的,有一个UserBean
参数的实例方法。
public   Student  test5(UserBean user,int num,char  value){  return null;} 

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

public static  void  test1(){ } --- 没有返回值,没有参数的静态方法【类方法】
public static   int   test2(){ return 12;}---返回值为int,没有参数的静态方法【类方法】
public static  void  test3(int a){  } ---- 没有返回值,有参数1int型参数的静态方法【类方法】
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){}
} 

4.8.什么是方法重载?
在同一个类中方法的名称相同,参数不一样,这种现象就叫方法重载。
注意:方法重载与方法的返回值类型没有关系
例如:

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  }

构造方法、实例方法、静态方法都是可以重载的。
4.9.同一个Java类中方法与变量的调用关系?

public class  Person{
 	public  int  perid=1001;//实例变量       
 	public static  String pername="zhangsan";//类变量       
 	//构造方法中可以访问实例变量/类变量/局部变量       
 	public  Person(){
 	char  sex='男'; //局部变量
 	//构造方法中访问实例变量默认this.实例变量,this可以被省略。		
 	System.out.println("构造方法中-实例变量-perid【默认】=="+this.perid);		
 	System.out.println("构造方法中-实例变量-perid=="+perid);		
 	//构造方法中访问类变量默认类名.实例变量,也可以this.类变量,类名/this可以被省略
 	System.out.println("构造方法中-类变量-pername【类名】=="+Person.pername);
 	System.out.println("构造方法中-类变量-pername【this】=="+this.pername);
 	System.out.println("构造方法中-类变量-pername=="+pername);		
 	//构造方法中访问局部变量直接变量名称		
 	System.out.println("构造方法中-局部变量-sex=="+sex);	
 	}

	//实例方法中可以访问实例变量/类变量/局部变量
	public  void  testMehtod1(){
		char  sex='男'; //局部变量
		//实例方法中访问实例变量默认this.实例变量,this可以被省略。
  		System.out.println("实例方法中-实例变量-perid【默认】=="+this.perid);
  		System.out.println("实例方法中-实例变量-perid=="+perid);
  		//实例方法中访问类变量默认类名.实例变量,也可以this.类变量,类名/this可以被省略
  		System.out.println("实例方法中-类变量-pername【类名】=="+Person.pername);
  		System.out.println("实例方法中-类变量-pername【this】=="+this.pername);
  		System.out.println("实例方法中-类变量-pername=="+pername);
  		//实例方法中访问局部变量直接变量名称
  		System.out.println("实例方法中-局部变量-sex=="+sex);
 	}

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

	public static  void  testStaticMehtod(){
		char  sex='男'; //局部变量
		//System.out.println("静态方法中-实例变量-perid=="+perid);//错误
  		//静态方法中访问类变量默认类名.实例变量,类名可以被省略
  		System.out.println("实例方法中-类变量-pername【类名】=="+Person.pername);
  		//静态方法中不能有this
  		//System.out.println("实例方法中-类变量-pername【this=="+this.pername);
  		System.out.println("静态方法中-类变量-pername=="+pername);
  		//静态方法中访问局部变量直接变量名称
  		System.out.println("静态方法中-局部变量-sex=="+sex);
  		}
  	}
	
public  class  TestMain{
	public static void main(String args[]){
	Person per1=new Person();
	per1.testMehtod1();
	per1.testStaticMehtod();
	}
}

在这里插入图片描述
总结:
在用一个类中:
构造方法中可以访问实例变量/类变量/局部变量
//构造方法中访问实例变量默认this.实例变量,this可以被省略。
//构造方法中访问类变量默认类名.实例变量,也可以this.类变量,类名/this可以被省略
//构造方法中访问局部变量直接变量名称

实例方法中可以访问实例变量/类变量/局部变量
//实例方法中访问实例变量默认this.实例变量,this可以被省略。
//实例方法中访问类变量默认类名.实例变量,也可以this.类变量,类名/this可以被省略
//实例方法中访问局部变量直接变量名称

静态方法中可以访问类变量/局部变量,不可以访问实例变量
//静态方法中访问类变量默认类名,类名可以被省略
//静态方法中不能有this
//静态方法中访问局部变量直接变量名称

为什么静态方法中不可以访问实例变量变量?
静态方法内存分配时机早于实例变量的内存分配时机,静态方法访问实例变量的时候,实例变量是不存在。

4.10.同一个Java类中方法与方法的调用关系?
在用一个类中:
构造方法中可以访问其他的构造方法/实例方法/类方法
//构造方法中访问其他的构造方法new 其他的构造方法;
//构造方法中访问实例方法默认this.实例方法,this可以被省略
//构造方法中访问类方法默认类名.类方法,也可以this.类方法,类名/this可以省略

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

静态方法中可以访问构造方法/其他的静态方法,不可以访问实例方法
//静态方法中访问构造方法new 构造方法
//静态方法中不能有this
//静态方法中访问类方法默认类名.类方法,类名可以省略

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值