javaSE----类和对象_2

类和对象_2

7.Java类中方法的表现形式及其基本特征?
Java类中方法是为了描述具有共同性质的一组数物的基本功能/行为。
Java类中方法的表现形式

  • 1.实例方法格式
    访问限制修饰符 方法的返回值数据类型 方法的名称(参数列表){方法体}

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

  • 1.2.方法的返回值数据类型
    返回值-----方法执行结果
    数据类型—基本数据类型【复合数据类型】
    有返回值—方法体中的最后一句话是“return”,方法的返回值数据类型一定是结果值的具体数据类型
    没有返回值—方法体中的没有“return”,方法的返回值数据类型void代替。

  • 1.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关键字的方法就是实例方法
    例如:

    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){}  
}

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  
}

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

package 十二月9;

public class Student {
	/**
	 * 测试在同一个java类中方法与变量的调用关系
	 */
	public  int  classes=1001;//实例变量
	public static  String name="zhangsan";//类变量
	//构造方法中可以访问实例变量/类变量/局部变量
	
	//构造方法
	public Student() {
		char  sex='男'; //局部变量
		//构造方法中访问实例变量默认this.实例变量,this可以被省略。
		System.out.println("构造方法中-实例变量-classes【默认】=="+this.classes);
		System.out.println("构造方法中-实例变量-classes=="+classes);
		//构造方法中访问类变量默认类名.实例变量,也可以this.类变量,类名/this可以被省略
		System.out.println("构造方法中-类变量-name【类名】=="+Student.name);
		System.out.println("构造方法中-类变量-name【this】=="+this.name);
		System.out.println("构造方法中-类变量-name=="+name);
		//构造方法中访问局部变量直接变量名称
		System.out.println("构造方法中-局部变量-sex=="+sex);
	}
	
	
	//实例方法
	//实例方法中可以访问实例变量/类变量/局部变量
	public  void  testMehtod1() {
		char  sex='男'; //局部变量
		//实例方法中访问实例变量默认this.实例变量,this可以被省略.
		System.out.println("实例方法中-实例变量-classes【默认】=="+this.classes);
		System.out.println("实例方法中--实例变量-classes=="+classes);
		//实例方法中访问类变量默认类名.实例变量,也可以this.类变量,类名/this可以被省略
		System.out.println("实例方法中-类变量-name【类名】=="+Student.name);
		System.out.println("实例方法中-类变量-name【this】=="+this.name);
		System.out.println("实例方法中-类变量-name=="+name);
		//实例方法中访问局部变量直接变量名称
		System.out.println("实例方法中--局部变量=="+sex);
	}
	
	//静态方法
	//静态方法中不能访问实例变量,可以访问类变量、局部变量
	public static void testtestStaticMehtod() {
		char sex='男';
		//System.out.println("静态方法中-实例变量-classes=="+classes);//错误
		//静态方法中访问类变量默认类名.实例变量,类名可以被省略
		System.out.println("静态方法中-类变量-Student【类名】=="+Student.name);
		//静态方法中不能有this
		//System.out.println("实例方法中-类变量-pername【this=="+this.name);
		System.out.println("静态方法中-类变量-name=="+name);
		//静态方法中访问局部变量直接变量名称
		System.out.println("静态方法中-局部变量-sex=="+sex);
	}
}

测试类:

package 十二月9;

public class TestMain {
   public static void main(String[] args) {
	Student s1=new Student();
	s1.testMehtod1();
    s1.testtestStaticMehtod();
   }
}

在这里插入图片描述

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

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

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

10.同一个Java类中方法与方法的调用关系?

public class Method {
	private int name;
	//测试在同一个类中方法与方法的调用关系
	//构造方法
	//1.构造方法访问其他的方法
	//构造方法可以访问其他的构造方法,new 构造方法
	//构造方法可以访问实例方法,默认this.实例方法,this.可以省略
	//构造方法可以访问类方法,默认类名.类方法,也可以this.类方法,类名.this.可以省略
	public Method() {
		new Method("zhangsan");//调用带参构造方法
		this.shiliMethod1("lisi");//调用带参实例方法
		shiliMethod1("lisi");//调用带参实例方法
		Method.staticMethod1("wangwu");//调用带参静态方法
		this.staticMethod1("wangwu");//调用带参静态方法
		staticMethod1("wangwu");//调用带参静态方法
	}
	//构造方法带参数
    public Method(String name) {
		System.out.println("有参数的构造方法,参数name=="+name);
	}
    //实例方法
    public void shiliMethod1() {
    	new Method("zhangsan");//调用带参构造方法
		this.shiliMethod1("lisi");//调用带参实例方法
		shiliMethod1("lisi");//调用带参实例方法
		Method.staticMethod1("wangwu");//调用带参静态方法
		this.staticMethod1("wangwu");//调用带参静态方法
		staticMethod1("wangwu");//调用带参静态方法
    }
    //实例带参方法
    public void shiliMethod1(String name) {
    	System.out.println("有参数的实例方法,参数name=="+name);
    }
    
    //静态方法
    public static void staticMethod1() {
    	new Method("zhangsan");//调用带参构造方法
		//this.shiliMethod1("lisi");//调用带参实例方法(报错,不能有this关键字)
		//shiliMethod1("lisi");//调用带参实例方法(报错,不能调用实例方法)
		Method.staticMethod1("wangwu");//调用带参静态方法
		//this.staticMethod1("wangwu");//调用带参静态方法(报错,不能有this关键字)
		staticMethod1("wangwu");//调用带参静态方法
    }
    */
    //静态带参方法
    public static void staticMethod1(String name) {
    	System.out.println("有参数的静态方法,参数name=="+name);
    }
}

测试类:
测试构造方法与其他方法的关系:

public class TestMethod {
	public static void main(String[] args) {
		System.out.println("调用无参构造方法");
    	new Method();
		
    	}
    }

在这里插入图片描述
测试类:
测试实例方法与其他方法的关系:

public class TestMethod {
	public static void main(String[] args) {
		Method m1=new Method();
		System.out.println("调用无参实例方法");
    	m1.shiliMethod1();
    	}
    }

在这里插入图片描述
测试类:
测试静态方法与其他方法的关系:

public class TestMethod {
	public static void main(String[] args) {
		Method m1=new Method();
		System.out.println("调用无参静态方法");
    	m1.staticMethod1();
    	}
    }

在这里插入图片描述
总结:
在用一个类中:
构造方法中可以访问其他的构造方法/实例方法/类方法
         //构造方法中访问其他的构造方法new 其他的构造方法;
         //构造方法中访问实例方法默认this.实例方法,this可以被省略
         //构造方法中访问类方法默认类名.类方法,也可以this.类方法,类名/this可以省略

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

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

为什么静态方法中不可以访问实例元素?
静态方法内存分配时机早于实例元素的内存分配时机,静态方法访问实例元素的时候,实例元素是不存在。
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值