第03章面向对象.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
输出结果: This is Inner. pack1.Outer$1Inner@4f1d0d 30 20 10 40 注意:不能在局部内部类所在的方法或语句块之外调用局部内部类。因为局部内部类相当于局部变量,在方法外访问局部变量是不可能的。对于局部类的命名,不管是在一个方法中定义多个类还是在几个方法中分别定义类,其编译后命名是:OuterClass$1InnerClass.class。 3.13 内部类 3.13.1 实例成员内部类 3.13.2 局部内部类 3.13.3 匿名内部类 3.13.4 静态成员内部类 3.13.5 内部类的继承 3.13.6 内部类的2种特殊用法 3.13.7 内部类总结 3.13.3 匿名内部类 匿名内部类作为一种特殊的内部类,除了具有普通内部类的特点,还有自己的一些独有特性:匿名内部类必须扩展一个基类或实现一个接口,但是不能有显式的extends和implements子句;匿名内部类必须实现父类以及接口中的所有抽象方法;匿名内部类总是使用父类的无参构造方法来创建实例。如果是实现了一个接口,则其构造方法是Object();匿名内部类编译后的命名为:OuterClass$n.class,其中n是一个从1开始的整数,如果在一个类中定义了多个匿名内部类,则按照他们的出现顺序从1开始排号。匿名类是在一个表达式内部包含一个完整的类定义,将类声明和 Why: What: How: 3.12 继承与多态的综合用例 class Triangle extends Shape { public int getSides() { //重写 return 3; } } class Rectangle extends Shape { public int getSides(int i) { //重载 return i; } } public class Shape { public boolean isSharp(){ return true; } public int getSides(){//重载 return 0 ; } public int getSides(Triangle tri){ //重载 return 3 ; } public int getSides(Rectangle rec){ //重载 return 4 ; } public static void main(String[] args) { Triangle tri = new Triangle(); System.out.println(Triangle is a type of sharp? + tri.isSharp()); //继承 Shape shape = new Triangle(); //多态 System.out.println(My shape has + shape.getSides() + sides.); //多态 } } Triangle类的方法是重写,而Rectangle类的方法是重载。比较重载与多态的代码,可以发现多态相对于重载的优点:如果用重载,则在父类里要对应每一个子类都重载一个取得边数的方法;如果用多态,则父类只提供取得边数的接口,至于取得哪个形状的边数,怎样取得,在子类里各自实现(重写)。即我们得出以下代码编写原则: 尽量在各个子类中各自覆盖实现,到父类或另外一个类中多态实现。而不在父类中用重载,每个重载的方法都要单独调用。 3.12 继承与多态的综合用例 2.获得不同类的成员变量的方法: 编程中,我们经常需要获得某个成员变量的值(如name)用于输出或计算。一般的,获得某个成员变量的值有以下几种方式:(1)用this.name或super.name。(2)如果是static的变量,用类名.name。(3)用getter方法。即定义一个getName()的方法,从中return name。在这三种方式中,第三种方式具有通用性。因为第一种方法只能在本类或子类中可以使用。第二种方式局限于静态变量,而且方法中出现该成员变量的所在的类名,会使得该方法绑定到该类,有可能破坏该方法的通用性。 2.获得不同类的成员变量的方法 由前所述,为了代码的通用性,我们一般采用面向抽象编程,这样就要用到上转型和多态,即上转型变量调用的实例方法是子类的方法,而调用的变量是父类的变量,那么我

文档评论(0)

希望之星 + 关注
实名认证
内容提供者

我是一名原创力文库的爱好者!从事自由职业!

1亿VIP精品文档

相关文档