科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道Java初学者容易混淆的几个问题详细解析 (2)

Java初学者容易混淆的几个问题详细解析 (2)

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

Java初学者容易混淆的几个问题详细解析 (2)

作者:dxaw 来源:赛迪网技术社区 2007年11月5日

关键字: 解析 容易混淆 java

  • 评论
  • 分享微博
  • 分享邮件

3.实例变量与类变量

可以通过两种方法在类中存储数据───作为实例变量和类变量.实例变量是特定于对象的,如果你有两个对象(即一个类的两个实例),每一个对象中的实例变量独立于另一个对象中的实例变量的;另一方面,两个对象的类变量均指向相同的数据,并因此面保存相同的值,换句话说,类变量被类中的所有对象共享.差点忘了,它们在形式上的区别,类变量在声明时比实例变量多一个static.

eg: 

   class data 

   public int intdata=0;//显然,intdata在这儿是实例变量 

   } 

   public class exam 

   { 

   public static void main(String[] args) 

   { 

   data a,b; 

   a=new data(); 

   b=new data(); 

   a.intdata=1; 

   System.out.println("b.indata="+b.intdata); 

   } 

   }

运行结果:

b.intdata=0

结果分析:

可以看出,a.intdata的值虽然变了,但并没有影响b.intdata.但是如果在data类中声明intdata时,在其前面加上static就变成类变量了(即:public static int intdata=0;),则此时运行结果会变为:

b.intdata=1

这次a.intdata值的改变可把b.intdata影响了,事实上,对象a和b的类变量均指向相同的数据,所有值一样,这就是类变量的作用.

4.实例方法,类方法,构造器方法

我们通常所说的方法系指实例方法,就像c语言中的函数一样,其具体方法我就不用说了,在这里我主要是用它来区分类方法和构造器方法.类方法与实例方法最大的区别是:在形式上类方法多一个static,在用法上,不必创建对象就可直接调用类方法(而实例方法却一定要先创建对象,再通过对象调用).

eg: 

   class add 

   { 

   static int addem(int op1,int op2) 

   { 
   return op1+op2; 

   } 

   } 

   public class xxf 

   { 

   public static void main(String[] args) 

   { 

   System.out.println("addem(2,2)="+add.addem(2,2)); 

   } //直接用类名作为对象调用类方法 

   }

  

注: 也可按通常的方法,即先创建对象,再调用方法,不过,这时static就无任何意义了.

再说说构造器方法,它是用来初始化对象中的数据的一种方法,创建很容易,只需在类中加上一个与这个类同名的方法,不需要在前面加任何访问说明符或者返回类型,另外,构造器也一样可以向方法一样传递参数.

eg: 

  class data 

   { 

   private String data1;//事先声明 
   data(String s) 

   { 

   data1=s; /*通过接收数据来初始化变量.(注:不能在构造器内 

   声明变量,事先在外就要声明.)*/ 

   } 

   public String getdata() 

   { 

   return data1; 

   } 

   } 

   public class xxf 

   { 

   public static void main(String[] args) 

   { 

   System.out.println((new data("I love you")).getdata());
     /*通过传递参数调用构造器新建一个对象,再通过对象调用方法得到数据*/ 

   } 

   }

5.接口与类

类是对一类特定对象的规格说明,我们可以类定义创建对象,通过创建对象来组合所有属于该类的组件,而接口不能这样做.而接口实质上就是一个常量和抽象方法的集合,要使用一个接口,就需要在类中实现这个接口,然后作为类定义的一部分,编写接口中声明的每一个方法,接口中的方法永远是public,abstract,接口中的常量永远是public static和final,因此不需要为它们说明属性.因为在Java中不支持多重继承,但是,可以用接口来实现类似的功能,这是接口的重要作用之一.

eg: 

   interface anyone //定义一个接口 

   { 

   final double PI=3.1416; 

   void setNumber(int number); 

   int getNumber(); 

   } 

   interface anyother //定义另一个接口 

   { 

   void setString(String str); 

   String getString(); 

   } 

   class xxf implement anyone,anyother //定义一个类,并使用两个接口 

   { 

   int number; 

   String str; 

   public xxf(){} 

   void setNumber(int number) 

   { 

   this.number=number; 

   } 

   void setString(String str) 

   { 

   this.str=str; 

   } 

   void int getNumber(){}//可以为一个空实现. 

   void String getString(){} 

   }

//在类中必须实现接口中声明的所有方法.(当然也可不必,但是要用到适配器类或用抽象类)

查看本文来源
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章