类和对象_2

类和对象_2

4.7.Java类中方法的表现形式及其基本特征?

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

    1.实例方法格式

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

      (1)访问限制修饰符---public  缺省的

      (2)方法的返回值数据类型

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

          数据类型---基本数据类型【复合数据类型】;

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

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

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

      (4)参数列表

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

         列表----可以有多个

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

     (5)方法体--方法的身体【具体执行代码】  

         例如:

public class Test1{
    //没有返回值,没有参数的方法
	   public void method1(){  }
                //有返回值【int】,没有参数的方法
	   public int method2(){
                           return 5;
                        }
	//没有返回值,有一个int参数的额方法
	   public void method3(int int1){}
	//有返回值[char],有一个int参数和一个char参数的方法
	   public char method4(int int2,char char1){
                               return 'H';
                }
}

     2.静态方法格式

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

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

         例如:

public class Test2{
	//2.静态方法
    //没有返回值,没有参数的静态方法
	   public static void method1(){}
	//有返回值int,没有参数的静态方法
	   public static int method2(){
 	        return 10;
                       }
	//没有返回值,有一个int参数的静态方法
	   public static void method3(int int1){}
	//有返回值String型,有一个int参数和一个String参数的静态方法
	   public static String method4(int int2,String name){
	        return "zhangsan";
                            }

}

   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 Test5{
	   public int int1=150;//实例变量
	   public static String str1="zhangsan";//静态成员变量【类变量】
	//同一个类中,方法与变量的关系
	//只能用方法调用变量,不能用变量调用方法

	//1.构造方法中调用本类变量
	//构造方法可以访问实例变量,默认this.实例变量,可以省略this.
	//构造方法可以访问类变量,默认类名.类变量,也可以this.类变量,可以省略类名/this.
	//构造方法可以访问局部变量,直接使用局部变量名称
	/*
	   public 	Test5(){
                        int int2=200;//局部变量
	        System.out.println("构造方法中调用实例变量默认this.int1=="+this.int1);
	        System.out.println("构造方法中调用实例变量int1=="+int1);
	        System.out.println("构造方法中调用类变量默认类名.str1=="+Test5.str1);
	        System.out.println("构造方法中调用类变量this.str1=="+this.str1);
	        System.out.println("构造方法中调用类变量str1=="+str1);
                        System.out.println("构造方法中调用局部变量int2=="+int2);
                      }
	*/
	//2.实例方法调用本类变量
	//构造方法可以访问实例变量,默认this.实例变量,可以省略this.
	//构造方法可以访问类变量,默认类名.类变量,也可以this.类变量,可以省略类名/this.
	//构造方法可以访问局部变量,直接使用局部变量名称
	/*
	   public void method(){
	        int int3=500;//局部变量
	        System.out.println("实例方法中调用实例变量默认this.int1=="+this.int1);
	        System.out.println("实例方法中调用实例变量int1=="+int1);
	        System.out.println("实例方法中调用类变量默认类名.str1=="+Test5.str1);
	        System.out.println("实例方法中调用类变量this.str1=="+this.str1);
	        System.out.println("实例方法中调用类变量str1=="+str1);
                        System.out.println("实例方法中调用局部变量int3=="+int3);
                        }
	*/
	//3.静态方法【类方法】调用本类变量
               //静态方法中访问类变量默认类名.实例变量,类名可以被省略
               //静态方法中不能有this
               //静态方法中访问局部变量直接变量名称
	     public static void staticmethod(){
	         int int4=850;//局部变量
	        //错误
	        //System.out.println("静态方法中调用实例变量默认this.int1=="+this.int1);
                        //错误
	        //System.out.println("静态方法中调用实例变量int1=="+int1);
	           System.out.println("静态方法中调用类变量默认类名.str1=="+Test5.str1);
                        //错误
	        // System.out.println("静态方法中调用类变量this.str1=="+this.str1);
	        System.out.println("静态方法中调用类变量str1=="+str1);
                        System.out.println("静态方法中调用局部变量int4=="+int4);
                          }	
}

         测试类:

public class TestMain{
          public static void main(String args[]){
	//1.构造方法访问变量
                    //new Test5();
	//2.实例方法访问变量
                   /*
	      Test5 t5=new Test5();
                      t5.method();
                   */
	//3.静态方法访问变量
	      Test5 t6=new Test5();
	      t6.staticmethod();

            }
}

总结,在用一个类中:

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

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

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

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

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

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

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

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

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

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

      (2)静态方法中不能有this

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

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

public class Test6{
	//在同一个类中,方法与方法的关系
	//1.构造方法      构造方法访问其他方法
	//构造方法可以访问其他的构造方法,new 构造方法
	//构造方法可以访问实例方法,默认this.实例方法,this.可以省略
	//构造方法可以访问类方法,默认类名.类方法,也可以this.类方法,类名.this.可以省略	
	    public Test6(){
                        new Test6("zhangsan");
	        this.shiliMethod("lisi");
	        shiliMethod("lisi");
                        Test6.staticMethod("wangwu");
	        this.staticMethod("wangwu");
                        staticMethod("wangwu");
                            }
	    public Test6(String name){
                       System.out.println("有参数的构造方法,参数name=="+name);
                           }
	//2.实例方法     实例方法访问其他方法
	//实例方法可以访问构造方法,new 构造方法
	//实例方法可以访问其他实例方法,默认this.实例方法,this.可以省略
	//实例方法可以访问类方法,默认类名.类方法,也可以this.类方法,类名.this.可以省略
                    public void shiliMethod(){
                        new Test6("zhangsan");
	        this.shiliMethod("lisi");
	        shiliMethod("lisi");
                        Test6.staticMethod("wangwu");
	        this.staticMethod("wangwu");
                        staticMethod("wangwu");
                           }
                    public void shiliMethod(String name){
	         System.out.println("有参数的实例方法,参数name=="+name);
                           }
	//3.静态方法      静态方法访问其他方法
	//静态方法中绝对不能有this
	//静态方法可以访问构造方法,new 构造方法
	//静态方法不可以访问实例方法
	//静态方法可以访问其他类方法,默认类名.类方法,类名.可以省略
	     public  static void staticMethod(){
	        new Test6("zhangsan");
	        //错误
	        //this.shiliMethod("lisi");
	        //错误
	        //shiliMethod("lisi");
                        Test6.staticMethod("wangwu");
	        //错误
	        //this.staticMethod("wangwu");
                           staticMethod("wangwu");
                          }
                      public  static void staticMethod(String name){
                          System.out.println("有参数的静态方法,参数name=="+name);
                          }

}

       测试类:

                //方法访问其他方法
public class TestMain2{
           public static void main(String args[]){
	//1.构造方法访问其他方法
                // new Test6();
	//2.实例方法访问其他方法
                     Test6 t1=new Test6();
                      t1.shiliMethod();
	//3.静态方法访问其他方法
                      Test6 t2=new Test6();
                      t2.staticMethod();
                                 
                      }
}

总结,在同一个类中:

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

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

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

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

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

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

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

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

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

    (1)静态方法中访问构造方法new  构造方法

    (2)静态方法中不能有this

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

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

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

   “类”的结构图:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值