- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
JAVA第六讲 面向对象(三).doc
JAVA第六讲
——继承(下)
4.7抽象类
4.7.1抽象类概述
1.抽象定义
抽象就是从多个事物中将共性的、本质的内容抽取出来。
例:狼和狗都是犬科,犬科就是抽象出来的概念。
2.抽象类
JAVA中可以定义没有方法体的方法,该方法的具体实现由子类完成,该方法称为抽象方法,包含抽象方法的类就是抽象类。
3.抽象方法的由来
4.7.2抽象类的特点
1.抽象类和抽象方法必须用abstract关键字来修饰
2.抽象方法只有方法声明,没有方法体,定义在抽象类中,格式:
修饰符 abstract 返回值类型 函数名(参数列表);
3.抽象类不能被实例化,也就是不能用new创建对象,原因是:
(1)抽象类是具体事物抽取出来的,本身不是具体的,没有对应的实例。
(2)抽象类即使创建了对象,调用抽象方法也是没有意义的。
抽象类通过它的子类实例化,而子类需要覆盖抽象类中的所有抽象方法后才可以创建抽象类的对象,否则该子类也是一个抽象类。
小结抽象类的特点:
★一个抽象类中可以有多个抽象方法。而且子类必须具体化抽象类中的所有抽象方法,有几个抽象方法,就要具体实现几个。如果子类只覆盖了部分抽象方法,那么该类还是一个抽象类。
★在一个抽象类中,可以有抽象方法,也可以有非抽象方法,当时只要有了抽象方法,该类就是抽象类。
★抽象类是有构造函数的。
★抽象方法一定在抽象类中。
★抽象类中的方法要被使用,必须由子类复写其所有的抽象方法后,建立子类对象调用。
★抽象类比一般类多了个抽象函数。
★特殊:抽象类中可以不定义抽象方法,这样做仅仅为了让该类不可以创建对象。
Super(父类的实例变量);//调用父类指定的构造器
子类所共有的都抽取出来放进父类,子类特有的就放在子类里面。
获取时间:System.currentTimemeMillis( );
模板设计模式:在定义功能时,功能的一部分是确定的,有一部分是不确定的,就将不确定部分暴露出去,由该类的子类完成具体化。
4.8接口interface
理解:可以认为是一个特殊的抽象类,当抽象类中的方法都是抽象的,那么该类可以通过接口的形式来表示,也就是接口就是特殊的抽象类;接口是用来扩展功能的,例如:学生类,张三类,李四类的例子
张三只是继承了学生类,他在学校就是学习,李四不仅继承了学生类,还实现了抽烟的接口,她在学校不仅学习,还要抽烟。因此抽烟的接口就扩展了李四抽烟的功能。
★接口不能创建对象,需要被子类实现,子类对接口中的抽象方法全都覆盖后,子类才可以实例化。否则子类是一个抽象类。
★接口是用来实现的,不是用来继承的。
接口没有构造函数,类(抽象类)有构造函数。class D extends C implements A,B
4.9多态
定义:某一类事物的多种存在形式。
多态的前提:继承,覆盖
原则:(1)当编译的时候,在编译的时候我们看左边(等号的左边,点号的左边)(这种判断的前提是类中非静态的成员函数)为什么需要内部类?
典型的情况是,内部类继承自某个类或实现某个接口,内部类的代码操作创建其的外围类的对象。所以你可以认为内部类提供了某种进入其外围类的窗口。内部类作为外部类的一个成员,并且依附于外部类而存在的内部类可为静态,可用protected和private修饰(而外部类只能使用public和缺省的包访问权限)内部类主要有以下几类:成员内部类、局部内部类、静态内部类、匿名内部类
作为外部类的一个成员存在,与外部类的属性、方法并列
如果内部类被static修饰,而这时要访问外部类中的成员,该成员必须是静态的局部内部类,就是将一个类定义到一个外部类的方法里面
成员内部类中,不能定义静态成员成员内部类中,可以访问外部类的所有成员
System.out.println(i);//在内部类中访问内部类自己的变量直接用变量名
System.out.println(this.j);
//在内部类中访问内部类自己的变量也可以用this.变量名
//在内部类中访问外部类中与内部类同名的实例变量用外部类名.this.变量名System.out.println(Outer.this.j);
//如果内部类中没有与外部类同名的变量,则可以直接用变量名访问外部类变量System.out.println(k);
如果要直接创建内部类的对象,不能想当然地认为只需加上外围类Outer的名字,就可以按照通常的样子生成内部类的对象,而是必须使用此外围类的一个对象来创建其内部类的一个对象:Outer.Inner outin = out.new Inner()
(2)局部内部类
注意:
如果内部类没有与外部类同名的变量,在内部类中可以直接访问外部类的实例变量
可以访问外部类的局部变量(即方法内的变
文档评论(0)