锁定老帖子 主题: corejava辅导(7--1)
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2008-12-03
Java封装类
Java为每一个简单数据类型提供了一个封装类,每个简单数据类型可以封装成对象类型。
除int(Integer)和char(Character),其余类型首字母大写即成封装类类型名。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之间的转换最多。
(注:所有使用内部类的地方都可以不用内部类,但使用内部类可以使程序更加的简洁,便于命名规范和划分层次结构)。 。
内部类
内部类是指在一个外部类的内部再定义一个类。 *内部类可为静态,可用protected和private修饰。(而外部类不可以:顶级类只能使用public和default)。 *JAVA文件中没有publie class 可以类名和文件不同名
内部类的分类
成员内部类、 局部内部类、 静态内部类、 匿名内部类(图形是要用到,必须掌握)。
成员内部类
四个访问权限修饰符都可以修饰成员内部类。
内部类和外部类在编译时是不同的两个类,内部类对外部类没有任何依赖。 内部类是一种编译时语法,在编译时生成各自的字节码文件,内部类和外部类没有关系。 内部类中可以访问外部类的私有成员。 内部类是作为外部类的一个成员存在,与外部类的属性、方法并列。 内部类和外部类的实例变量可以共存。 在内部类中访问实例变量:this.属性 在内部类访问外部类的实例变量:外部类名.this.属性。 在外部类的外部访问内部类,使用out.inner.
成员内部类的特点:
1.内部类作为外部类的成员,可以访问外部类的私有成员或属性。(即使将外部类声明为private,但是对于处于其内部的内部类还是可见的。)
2.用内部类定义在外部类中的不可访问的属性。这样就在外部类中实现了比外部类的private还要小的访问权限。
注意:内部类是一个编译时的概念,一旦编译成功,就会成为完全不同的两类。
对于一个名为outer的外部类和其内部定义的名为inner的内部类。编译完成后出现outer.class和outer$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(); } }
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2008-12-03
大侠费心了,有没有pdf文件可以提供下载啊?
论坛的贴子滚来滚去的,看来极不方便啊。 |
|
返回顶楼 | |
发表时间:2008-12-08
netfork 写道 大侠费心了,有没有pdf文件可以提供下载啊?论坛的贴子滚来滚去的,看来极不方便啊。 呵呵,暂时还没有pdf的,等过几天做个电子书就可以让大家下载了,请稍等。 |
|
返回顶楼 | |
发表时间:2008-12-08
内部类做为代码隐藏,能定义为private就不定义为其他的,
static的内部类也不例外. 如果要在外部访问则不可定义为private了. |
|
返回顶楼 | |
浏览 1862 次