java中的类(2)

4.7.Java类中方法的表现形式及其基本特征?
Java类中方法是为了描述具有共同性质的一组事物的基本功能/行为。
Java类中方法的表现形式
   1.实例方法格式
   访问限制修饰符 方法的返回值数据类型 方法的名称(参数列表){方法体}
     (1).访问限制修饰符—public 缺省的
     (2).方法的返回值数据类型
       返回值-----方法执行结果
       数据类型—基本数据类型【复合数据类型】
       有返回值—方法体中的最后一句话是“return”,方法的返回值数据类型一定是结果值的具体数据类型
       没有返回值—方法体中的没有“return”,方法的返回值数据类型void代替。
     (3).方法的名称—合法的标识符【首字母小写,从第二个单词开始首字母大写】
     (4)参数列表
          参数----引入本方法以外的数据进入本方法进行运算【找帮手】局部变量
          列表----可以有多个
          没有参数的时候–()中的内容是空的
      (5)方法体–方法的身体【具体执行代码】
例如:

   public void tx1(){ }—没有返回值,没有参数的实例方法
   public int tx2(){return 11;}—返回值为int,没有参数的实例方法
   public void tx3(int a){ }—没有返回值,有参数1个int型参数的实例方法
   public String t4(User us){return"hai";}—返回值为String的,有一个User参数的实例方法
   public Student t5(User user,int num, char value){ retunrn null;}
2.静态方法格式
实例方法的访问限制修饰符后面加上static关键字的方法就是静态方法【类方法】
没有static关键字的方法就是实例方法
例如:
   public static void t1(){ }—没有返回值,没有参数的静态方法【类方法】
   public static int t2(){ return 11;}—返回值为int,没有参数的静态方法【类方法】
   public static void t3(int a){ }—没有返回值,有参数1个int型参数的静态方法【类方法】
   public static String t4(User us){ return"hai";}—返回值为Stringde1,有一个User参数的静态方法【类放法】。
   public static Student t5(User us,int num,char value){ return null;}
3.构造方法格式
实例方法格式中去掉方法的返回值数据类型,方法的名称是类名这种方法就叫构造方法。
例如:
public class Person{
   public Person(){ }—无参数的构造方法
    public Person(int num){ }—有一个int型参数的构造方法
    public Person(User us){ }—有一个User型参数的构造方法
    public Person(User us,int num,char value){ }
}
构造方法作用就是将来为了创建对象用的。
   当一个类创建好以后,会有一个默认的无参数构造方法存在,只是没有显式写出罢了。
   当这个类中出现一个有参数的构造方法时,我们就需要将这个默认的无参数构造方法
   显式写出,如果没有显式写出这个默认的无参数构造方法,那么这个默认的无参数构造方法将会被有参数的构造方法覆盖。
例如:

public  class  Student{
//存在一个默认的无参数构造方法
public Student(){}
public  Student(String name){}  
}

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

public class LianXi4{
         public void  t1(){ }
          public int   t1(int num){return 0;}
}

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

public class LianXi4{
     public void  t1(int num){ }
     public  int  t1(int num1,double num2){return 0;}
     public  int  t1(double num2,int num1){return 0;}
}

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

public class Peo{ 
           public int peoid=10086;//实例变量
           public static String peoname="xiaoming";//类变量
           //构造方法中可以访问实例变量/类变量/局部变量
           public Peo(){
              char   sex='男';//局部变量
            //构造方法中访问实例变量默认this.实例变量,this可以被省略。
            System.out.println("构造方法中-实例变量-peoid【默认】=="+this.peoid);
            System.out.println("构造方法中-实例变量-peoid=="+peoid);
            //构造方法中访问类变量默认类名.实例变量,也可以this.类变量,类名/this可以被省略
            System.out.println("构造方法中-类变量-peoname【类名】=="+Peo.peoname);
            System.out.println("构造方法中-类变量-peoname【this】=="+this.peoname);
            System.out.println("构造方法中-类变量-peoname=="+peoname);
            //构造方法中访问局部变量直接变量名称
            System.out.println("构造方法中-局部变量-sex=="+sex);
           }
            //实例方法中可以访问实例变量/类变量/局部变量
            public void t1(){
             char  sex='男';//局部变量
             //实例方法中访问实例变量默认this.实例变量,this可以被忽略。
              System.out.println("实例方法中-实例变量-peoid【默认】=="+this.peoid);
              System.out.println("实例方法中-实例变量-peoid=="+peoid);
               //实例方法中访问类变量默认类名.类变量,也可以this.类变量,类名/this.类变量,类              名/this可以被省略
              System.out.println("实例方法中-类变量-peoname【类名】=="+Peo.peoname);
              System.out.println("实例方法中-类变量-peoname【this】=="+peoname);
             //实例方法中访问局部变量直接变量名称
              System.out.println("实例方法中-局部变量-sex=="+sex);
            }
             //静态方法中不可以访问实例变量
             //静态方法中可以访问类变量/局部变量
              public  static  void  t2(){
               char sex='男';//局部变量
               //System.out.println("静态方法中-实例变量-peoid=="+peoid);//错误
               //静态方法中访问类变量默认类名.实例变量,类名可以被省略
               System.out.println("实例方法中-类变量-peoname【类名】=="+Peo.peoname);
               //静态方法中不能有this
               //System.out.println("实例方法中-类变量-peoname【this=="+this.peoname】;
               System.out.println("静态方法中-类变量-peoname=="+peoname);
               //静态方法中访问局部变量直接变量名称
               System.out.println("静态方法中-局部变量-sex=="+sex);
            }
}
public class Start{
          public static void main(String args[]){
               Peo  stu=new Peo();
               stu.t1();
               stu.t2();                  
         }
   }

运行的结果为:

总结:
在同一个类中:
构造方法中可以访问实例变量/类变量/局部变量
     (1)构造方法中访问实例变量默认this.实例变量,this可以被省略。
     (2)构造方法中访问类变量默认类名.实例变量,也可以this.类变量,类名/this可以被省略
     (3)构造方法中访问局部变量直接变量名称
实例方法中可以访问实例变量/类变量/局部变量
     (1)实例方法中访问实例变量默认this.实例变量,this可以被省略。
     (2)实例方法中访问类变量默认类名.实例变量,也可以this.类变量,类名/this可以被省略
     (3)实例方法中访问局部变量直接变量名称
静态方法中可以访问类变量/局部变量,不可以访问实例变量
     (1)静态方法中访问类变量默认类名.实例变量,类名可以被省略
     (2)静态方法中不能有this
     (3)静态方法中访问局部变量直接变量名称
为什么静态方法中不可以访问实例变量变量?
静态方法内存分配时机早于实例变量的内存分配时机,静态方法访问实例变量的时候,实例变量是不存在。
4.10.同一个Java类中方法与方法的调用关系?
在同一个类中:
构造方法中可以访问其他的构造方法/实例方法/类方法
     (1)构造方法中访问其他的构造方法new 其他的构造方法;
     (2)构造方法中访问实例方法默认this.实例方法,this可以被省略
     (3)构造方法中访问类方法默认类名.类方法,也可以this.类方法,类名/this可以省略
例如:

public class Shang{
      public Shang(){
              new Shang(1); 
               this.shiLi();
               shiLi();
               this.lei();
               lei()}
      public  Shang(int num){
          System.out.println("这是构造方法");
       }
      public void shiLi(){
          System.out.println("这是实例方法");
       }
      public static void  lei(){
          System.out.println("这是类方法");
      }
}
public class  YunXing{
            public static void main(String args[]){
            Shang stu1=new Shang();
             }
}

运行结果为:

实例方法中可以访问构造方法/其他实例方法/类方法
     (1)实例方法中访问构造方法默认new 构造方法
     (2)实例方法中访问其他实例方法默认this.其他实例方法,this可以被省略
     (3)实例方法中访问类方法默认类名.类方法,也可以this.类方法,类名/this可以省略
例如:

class Tian{
        public void shiLi(){
              new Tian();
              this.shiLi(1);
              shiLi(1);
              this.lei();
               lei();
               }
        public void shiLi(int num){
              System.out.println("这是实例方法");
         }
        public Tian(){
              System.out.println("这是构造方法");
        }
        public static void lei(){
              System.out.println("这是类方法");
         }
}
         public class HuoQu{
         public static void main(String args[]){
                    Tian  s =new Tian();
                    s.shiLi();
         }

 }  

运行结果图:

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

class Jing{
    public static  void lei(){
       new Jing();
        Jing.lei(1);
        lei(1);
       }
    public Jing(){
       System.out.println("这是结构方法");
       }
    public static void lei(int num){
       System.out.pritnln("这是静态方法");
       }
}
public class Shen{
       public static void main (String args[]){
         Jing stu=new Jing();
       }
}
              

运行结果图:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值