- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* 态性在实际中的含义就是不同的对象有相同的轮廓或形态,但具体执行的过程却大相径庭。例如,驾驶员在开车时都知道“遇到红灯时刹车”,这与驾驶员驾驶的是什么型号的车无关,所有的车都具有相同的轮廓或形态的刹车。 在Java开发中,基于继承的多态就是指对象功能的调用者用超类的引用来进行方法调用。这样,可以提高灵活性,因为用超类的引用能调用各种不同的子类实现,就像汽车驾驶员可以开各种不同的汽车一样。 * * * * * * * * * * * * 为什么需要内部类?典型的情况是,内部类继承自某个类或实现某个接口,内部类的代码创建其外围类的对象。所以可以认为内部类提供了某种进入其外围类的窗口。 内部类是指在一个外部类的内部再定义一个类。内部类作为外部类的一个成员,依附于外部类而存在。内部类可为静态,可用protected和private修饰(而外部类只能使用public和protected的包访问权限)。 从外面内部类看,完全可以将其看成是外部类的一个成员,与普通的成员没有什么区别,对普通成员的限制、修饰等都可以加之于非静态内部类。只是这个成员不再是基本数据类型,也不再是对象引用,而是一个类,由一个类来扮演成员的角色。 与局部变量类似,局部内部类不能有成员的访问限制修饰符,因为它不是外部类的一部分。 因此匿名内部类在声明类的同时也创建了对象。 5、使用局部内部类优点: (1)它对外面的所有类来说都是隐藏的,即使是它所属的外部类,仅有它所在的方法知道它(进一步隐藏),。 (2)它不仅可以访问它所属外部类中的数据,还可以访问局部变量,不过局部变量须声明为final类型。 (3)定义也没有名字冲突问题。 例3_24局部内部类程序举例 public class Outter { public void getInner() { class Inner { public void show() { System.out.println(局部内部类的对象中的方法); } } Inner i = new Inner(); i.show(); } } public class Sample3_24 { public static void main(String[] args) { Outter o = new Outter(); o.getInner(); } } public class Outter { public void getInner(){ final int x=100; class Inner { public void show() { System.out.println(访问方法中的局部变量,x = +x); } } Inner i=new Inner(); i.show(); } } 6、条件分支中的内部类 在条件分支中的内部类并不表示有条件的建立,同其他类一样,在编译时就一道解决了,内部类只是限定它的作用域(在条件分支中使用)。 if (e) {类定义} 3.6.4 匿名内部类 匿名内部类:在某个类的内部定义的无名的类 基本语法: new 匿名内部类要继承父类的对应构造器{ //匿名内部类类体 } 定义匿名内部类(一次性使用):在new关键字后定义内部类,并立即创建一个对象 匿名内部类的声明要么是基于继承的,要么是基于实现接口的。 匿名内部类例 匿名类可实例化一个接口 button1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { …. } }; ); 使用接口创建对象的一般途径是创建实现该接口的一个类定义,然后使用类来创建一个对象。 public class Outter { public void show(){ System.out.println(这里是Outter类的方法); } } public class Sample3_25 { public static void main(String[] args) { Outter out = new Outter(){ public void show() { System.out.println(创建匿名内部类的对象!); } }; out.show(); } } 例3_25匿名内部类程序举例 3.6.5 静态内部类 当内部类名前有static关键字时,该内部类
文档评论(0)