最新Java实用教程第12讲内部类(共18张PPT课件).pptx

上传人:豆**** 文档编号:24510279 上传时间:2022-07-05 格式:PPTX 页数:18 大小:154.16KB
返回 下载 相关 举报
最新Java实用教程第12讲内部类(共18张PPT课件).pptx_第1页
第1页 / 共18页
最新Java实用教程第12讲内部类(共18张PPT课件).pptx_第2页
第2页 / 共18页
点击查看更多>>
资源描述

《最新Java实用教程第12讲内部类(共18张PPT课件).pptx》由会员分享,可在线阅读,更多相关《最新Java实用教程第12讲内部类(共18张PPT课件).pptx(18页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、第12讲 内部(nib)类 12.1成员类成员类 12.2 局部内部类局部内部类 12.3 匿名内部类匿名内部类 12.4 静态静态(jngti)内部类内部类 12.5 内部类的继承内部类的继承 12.6 内部类的好处内部类的好处 12.7 本讲小结本讲小结第一页,共十八页。 Java中可以(ky)把一个类的定义放在另一个类的内部,外面的类称为外围类,里面的类称为内部类。内部类可以(ky)与其所在的外围类进行通信。 内部类可以分成员类、局部内部类、匿名内部类和静态内部类(嵌套类),下面就这几种内部类进行介绍。第二页,共十八页。12.1 成员成员(chngyun)类类没有static修饰的内部类

2、称为成员(chngyun)类,成员(chngyun)类的使用与普通类类似。示例代码如下:public class OuterClassOne class InnerOneprivate int i = 1;InnerOne()System.out.println(InnerOne();public int getI()return i;public void testInnerClass()InnerOne one = new InnerOne();int a = one.getI();System.out.println(a);public static void main(String a

3、rgs) OuterClassOne outer = new OuterClassOne();outer.testInnerClass();第三页,共十八页。12.1 成员成员(chngyun)类类在外围(wiwi)类的testInnerClass方法中可以创建成员类的对象,并可以调用成员类的方法。那么我们可以在外围(wiwi)类的哪些地方创建其成员类的对象呢?下面的代码可以回答这个问题:public class OuterClassTwo InnerOne one = new InnerOne(1);class InnerOneInnerOne(int i)System.out.printl

4、n(i+:InnerOne);public void OuterMethod1()InnerOne two = new InnerOne(2);public static void OuterMethod2()OuterClassTwo outer1 = new OuterClassTwo();InnerOne three = outer1.new InnerOne(3);public static void main(String args) OuterClassTwo outer2 = new OuterClassTwo();outer2.OuterMethod1();OuterMetho

5、d2();OuterClassTwo.InnerOne four = outer2.new InnerOne(4);第四页,共十八页。12.1 成员成员(chngyun)类类从上面的代码可以看出,成员类的对象依赖于其外围类的对象,也就是说,要想创建一个成员类的对象必须(bx)先创建一个其外围类的对象。成员类能够访问其外围类的所有成员,示例代码如下:public class OuterClassThree public int i = 1; int j = 2; protected int m = 3; private int n = 4; static int k = 5; class Inn

6、erOne public void show() System.out.println(i = +i); System.out.println(j = +j); System.out.println(m = +m); System.out.println(n = +n); System.out.println(k = +k); public static void main(String args) new OuterClassThree().new InnerOne().show();第五页,共十八页。12.2 局部局部(jb)内部类内部类可以在一个方法内或者在一个作用域内定义内部类,称为局

7、部(jb)内部类。下面代码展示了在一个方法内部定义的内部类。interface MyInterfacevoid print();public class OuterClassFive public MyInterface showInnerClass() class InnerOne implements MyInterface public void print() System.out.println(implementation); return new InnerOne(); public static void main(String args) new OuterClassFive

8、().showInnerClass().print();第六页,共十八页。12.2 局部局部(jb)内部类内部类下面代码展示(zhnsh)了在任意的作用域内嵌入式一个内部类:public class OuterClassSix private int showInnerClass(boolean b)if(b)class InnerOneprivate int i = 1;public int getI()return i;InnerOne one = new InnerOne();return one.getI();else return 0;public static void main(

9、String args) boolean b = true;/boolean b = false;int a = new OuterClassSix().showInnerClass(b);System.out.println(a);第七页,共十八页。12.3 匿名匿名(nmng)内部类内部类如果一个局部内部(nib)类没有名字,那么这个类称为匿名内部(nib)类。一个匿名内部(nib)类要么继承一个类(或抽象类),要么实现一个接口。示例代码如下:/首先声明一个类和接口class AClassAClass()System.out.println(AClasss);interface AInte

10、rfaceint j = 2;void show();第八页,共十八页。12.3 匿名匿名(nmng)内部类内部类public class OuterClassSeven public AClass getObjectOne()return new AClass();public AInterface getObjectTwo()return new AInterface()public void show()System.out.println(AInterface);public static void main(String args) OuterClassSeven outer = n

11、ew OuterClassSeven();outer.getObjectOne();outer.getObjectTwo().show();第九页,共十八页。12.4 静态静态(jngti)内部类内部类如果不需要内部类对象与其外围类对象之间有联系,那么可以将内部类声明为static,这样的内部类称为嵌套类。嵌套类没有连接(linji)到其外围类的this引用,它类似于其外围类的一个static方法。 示例代码如下: public class NestedClassOne private int i = 1;InnerOne one = new InnerOne();static class I

12、nnerOneprivate int m = 2;public static int n = 3;public void show()System.out.println(m = +m);System.out.println(n = +n);/System.out.println(i);/非法访问public static int get()return n;第十页,共十八页。12.4 静态静态(jngti)内部类内部类/(接上)void OuterMethodOne()InnerOne two = new InnerOne();two.show();int k = two.get();sta

13、tic void OuterMethodTwo()InnerOne three = new InnerOne();three.show();three.get();public static void main(String args) int x = NestedClassOne.InnerOne.get(); System.out.println(x = +x); NestedClassOne.OuterMethodTwo(); new NestedClassOne().OuterMethodOne(); /从上面的代码可以看出从上面的代码可以看出(kn ch)嵌套类的对象并不依赖于其外围

14、类的对象,嵌套类的对象并不依赖于其外围类的对象,并且不能从嵌套类对象中访问其外围类对象的非静态成员。并且不能从嵌套类对象中访问其外围类对象的非静态成员。第十一页,共十八页。12.4 静态静态(jngti)内部类内部类众所周知,接口中只能放置final的域和抽象方法。但嵌套类是static的,所以可以放在接口中定义(dngy),甚至可以实现这个接口,示例代码如下:public interface NestedInterface int i = 1; void show(); static class InnerOne implements NestedInterface public void

15、show() System.out.println(i = +i); public static void main(String args) new NestedInterface.InnerOne().show(); 第十二页,共十八页。12.5 内部内部(nib)类的继承类的继承因为内部类的对象必须依赖于其外围类的对象而存在,所以这使对内部类的继承变得复杂。在继承一个内部类时,其外围类的对象必须被初始化,所以在子类的构造方法中必须传入父类的外围类的引用。示例代码如下(rxi):class Carclass WheelWheel(int i)System.out.println(Wheel

16、:+i);public class PlaneWheel extends Car.Wheel PlaneWheel(Car c,int i) c.super(i);/可以对比c.new Wheel(i);进行理解 public static void main(String args) new PlaneWheel(new Car(),4);第十三页,共十八页。12.6 内部内部(nib)类的好处类的好处Java是单继承的,即一个类只能有一个父类。而接口只实现了部分多继承的好处,接口和内部类使Java中的“多继承”变得更加完美(wnmi)。示例代码如下:interface Oneinterfa

17、ce Twoclass A implements One,Twoclass B implements Oneclass Inner implements Twopublic class MultiInheritOne static void showOne(One one) static void showTwo(Two two)public static void main(String args) A a = new A();B b = new B();showOne(a);showTwo(b.new Inner();第十四页,共十八页。12.6 内部内部(nib)类的好处类的好处因为接口

18、是可以多继承的,所以类A实现了两个接口,从而实现“多继承”。而类B采用内部类的方式实现“多继承”,类B实现了接口One,其内部类Inner实现了接口Two。如果被继承的不是接口而是类或抽象类的话,那么只能采用内部类才能(cinng)实现“多继承”。示例代码如下:class TestAclass TestBclass TestC extends TestAclass Inner extends TestBpublic class MultiInheritTwo static void show(TestA a) static void show(TestB b)public static voi

19、d main(String args) TestC c = new TestC();show(c);show(c.new Inner();第十五页,共十八页。12.7 本讲小结本讲小结(xioji) 本讲首先讲述了各种内部类的特点,包括成员类、局部(jb)内部类、匿名内部类和静态内部类,其次讲述了内部类的继承和使用内部类的好处。第十六页,共十八页。讲后练习讲后练习(linx) 1、在静态方法中怎么创建成员类的对象? 2、总结各种内部类在编译后生成的.class文件的命名(mng mng)。 3、使用内部类有什么好处?第十七页,共十八页。内容(nirng)总结第12讲 内部(nib)类。12.7 本讲小结。private int i = 1。public static void main(String args) 。private int n = 4。static int k = 5。private int m = 2。public static int n = 3第十八页,共十八页。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > pptx模板 > 企业培训

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com