`
heimeiyingwang
  • 浏览: 94958 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

corejava辅导(7--1)

阅读更多

Java封装类

 

Java为每一个简单数据类型提供了一个封装类,每个简单数据类型可以封装成对象类型。

 

intIntegercharCharacter,其余类型首字母大写即成封装类类型名。double (Double), float(Float),long(Long), short(Short),byte(Byte),boolean(Boolean)

 

转换字符的方式:

int I=10;

String s=I+” ”;

String s1=String.valueOf(i);

 

Int I=10;

Interger I_class=new integer(I);

 

封装类.字符串.基本类型

 

Interger--------------------(Double(x.toString))--------------->Double

String ---------------------(Integer.valueOf() )---------------->Integer

Integer---------------------(x.toString() )-------------------->String

int-------------------------(100+””)------------------------->String

String----------------------(Integer.parseInt() )--------------->int

Integer---------------------(Integer.intValue() )--------------->int

 

 

学会查看java的帮助文档。先要关注使用方法的返回值类型,也就是要获得内容的类型,然后看方法名,JDK中的方法名基本上是见名知义,参数表,看需要什么才可以获得的需要的内容,也要看自己能够提供什么作为参数。

 

注意:“==”在任何时候都是比较地址,这种比较永远不会被覆盖。

 

程序员自己编写的类和JDK类是一种合作关系。(因为多态的存在,可能存在我们调用JDK类的情况,也可能存在JDK自动调用我们的类的情况。)

 

注意:类型转换中Double\Interger\String之间的转换最多。

 

 

(注:所有使用内部类的地方都可以不用内部类,但使用内部类可以使程序更加的简洁,便于命名规范和划分层次结构)。

 

 

内部类

 

内部类是指在一个外部类的内部再定义一个类。

*内部类可为静态,可用protectedprivate修饰。(而外部类不可以:顶级类只能使用publicdefault)。

*JAVA文件中没有publie class 可以类名和文件不同名

 

内部类的分类

 

成员内部类、   

局部内部类、

静态内部类、

匿名内部类(图形是要用到,必须掌握)

 

成员内部类

 

四个访问权限修饰符都可以修饰成员内部类

 

内部类外部类编译时不同的两个类内部类外部类没有任何依赖

内部类是一种编译时语法,在编译时生成各自的字节码文件,内部类外部类没有关系

内部类中可以访问外部类的私有成员

内部类是作为外部类的一个成员存在,与外部类的属性、方法并列

内部类外部类实例变量可以共存

在内部类中访问实例变量this.属性

在内部类访问外部类的实例变量外部类名.this.属性

在外部类的外部访问内部类,使用out.inner.

 

成员内部类的特点:

 

1.内部类作为外部类的成员,可以访问外部类的私有成员或属性。(即使将外部类声明为private,但是对于处于其内部的内部类还是可见的。)

 

2.用内部类定义在外部类中的不可访问的属性。这样就在外部类中实现了比外部类的private还要小的访问权限

 

注意:内部类是一个编译时的概念,一旦编译成功,就会成为完全不同的两类。

 

对于一个名为outer的外部类和其内部定义的名为inner的内部类。编译完成后出现outer.classouter$inner.class两类。

 

3.成员内部类不能含有静态成员。

 

建立内部类对象时应注意

在外部类的内部可以直接使用inner s=new inner();(因为外部类知道inner是哪个类,所以可以生成对象。)

而在外部类的外部,要生成(new)一个内部类对象,需要首先建立一个外部类对象(外部类可用),然后在生成一个内部类对象。内部类的类名是外部类类名.内部类类名。

 

例:

public class Test{

     public static void main(String[] args){

         Outer o=new Outer();

Outer.Inner in=o.new Inner();

Outer.Inner in=(new Outer).new Inner();

}

}

 

class Outer{

     private int a

     class Inner{

         private int b;

         public Inner(){

              this.b=Outer.this.a

         }

     }

     ……

}

 

静态内部类

 

注意:前三种内部类与变量类似,所以可以对照参考变量

静态内部类定义在类中,任何方法外,用static class定义。

静态内部类只能访问外部类的静态成员。

 

静态内部类和成员内部类的区别

创建(new)一个静态内部类不需要外部类成员:这是静态内部类和成员内部类的区别。

静态内部类的对象可以直接生成:

Outer.Inner in=new Outer.Inner()

而不需要通过生成外部类对象来生成。静态内部类成为了一个和外部类平等的类。静态内部类不可定义为private

例:

public class Test{

     public static void main(String[] args){

Outer.Inner in=new Outer.Inner()

}

}

 

class Outer{

     private static int a

     static class Inner{

         private int b;

         public Inner(){

              this.b=Outer.this.a

         }

     }

     ……

}

 

注意:当类与接口(或者是接口与接口)发生方法命名冲突的时候,此时必须使用内部类来实现。用接口不能完全地实现多继承,用接口配合内部类才能实现真正的多继承。

 

例子:

 

对于两个类,拥有相同的方法:

class People

{

  run();

}

interface Machine{

   run();

}

此时有一个robot类:

class Robot extends People implement Machine.

此时run()不可直接实现。

 

interface Machine

{

     void run();

}

class Person

{

     void run(){System.out.println("run");}

}

class Robot extends Person

{

     private class MachineHeart implements Machine

     {

         public void run(){System.out.println("heart run");}

     }

     public void run(){System.out.println("Robot run");}

     Machine getMachine(){return new MachineHeart();}

}

class Test

{

     public static void main(String[] args)

     {

         Robot robot=new Robot();

         Machine m=robot.getMachine();

         m.run();

         robot.run();

     }

}

 

分享到:
评论
3 楼 H_eaven 2008-12-08  
内部类做为代码隐藏,能定义为private就不定义为其他的,
static的内部类也不例外.
如果要在外部访问则不可定义为private了.
2 楼 heimeiyingwang 2008-12-08  
netfork 写道

大侠费心了,有没有pdf文件可以提供下载啊?论坛的贴子滚来滚去的,看来极不方便啊。

呵呵,暂时还没有pdf的,等过几天做个电子书就可以让大家下载了,请稍等。
1 楼 netfork 2008-12-03  
大侠费心了,有没有pdf文件可以提供下载啊?
论坛的贴子滚来滚去的,看来极不方便啊。

相关推荐

Global site tag (gtag.js) - Google Analytics