Java程序设计系列讲座.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Java程序设计系列讲座

* 研究一下对象的引用 一个类的成员函数(static除外),是不是一定要new才能被使用呢?例如GUI编程中经常有这种语句: Container container = getContentPane(); container.add(new Button(button1)); 这个container好像就没有new对吧?怎么就可以抓来用呢?难道随便get一下也能用? 其实这个container已经被new过了,只是你没有看见而已。get一下相当于做对象的引用。这么说好像很复杂,看一个例子: 对象的引用 I class A{ public int x; } public class Test{ public static void main(String args[]) { A a = new A(); a.x = 1; System.out.println(a.x=+a.x); A b = a; //注意这里b不是new出来的 b.x = 10; System.out.println(b.x=+b.x); System.out.println(a.x=+a.x); a.x = 100; System.out.println(a.x=+a.x); System.out.println(b.x=+b.x); } } 这个例子的输出是:a.x=1 b.x=10 a.x=10 a.x=100 b.x=100 对象的引用 II 总结一下,如果一个对象不是new出来的(例子中的b),而是直接用一个已经new出来的对象(例子中的a)给它赋值,那么这个对象b就叫做a的引用。 引用的对象之所以可以直接使用,不需要new,其实是因为它所指向的对象和赋值给它的对象是同一个!也就是它只是给原来的对象起了一个别名而已。 对象的引用 III 总结一下,类似下面这样b=a的操作叫做对象引用: A a = new A(); A b=a; 对象的引用乍看上去有点类似对象整体赋值,因为在某些高级语言中,确实会把a整体复制一遍给b,于是a和b仅仅内容相同而已,但是属于不同对象;但是Java对这句话的理解却是:b仅仅是a的别名,a和b其实表示同一个对象。所以别把语言搞混了。 OOP-Part III 多态性 多态性 静态多态性 体现在方法的重载 在编译阶段,具体调用哪个被重载的方法,编译器会根据参数的不同来静态确定调用相应的方法。 动态多态性 由于子类继承了父类所有的属性(私有的除外),所以子类对象可以作为父类对象使用。程序中凡是使用父类对象的地方,都可以用子类对象来代替。一个对象可以通过引用子类的实例来调用子类的方法。 重写方法的调用原则(匹配原则):对子类的一个实例,如果子类重写了父类的方法,则运行时系统调用子类的方法;否则调用父类的方法。 静态多态性:函数重载 class A { A() { } A(int i) { i++; } void fun(int i) { i++; } void fun(double f) { f++; } void fun(int i, int j) { i++; j++; } } 上例中函数A和fun都算重载。 重载的特征:函数名相同 重载的两个要素: 参数类型不同 参数个数不同 重载与返回值无关 动态多态性 当继承发生的时候,动态多态性就来了 运行时多态性是面向对象程序设计代码重用的一个最强大机制。 动态性的概念也可以被说成“一个接口,多个方法”。 Java实现运行时多态性的基础是动态方法调度,它是一种在运行时而不是在编译期调用重载方法的机制。 有个例子 class A { public void fun() { System.out.println(“A”); } } class B extends A { public void fun() { System.out.println(“B”); } } class C extends B { public void fun() { System.out.println(“C”); } } class Test { public static void main(String[] args) { A a; B b = new B(); C c = new C();   a=b;  a.fun(); // 此处将输出B   a=c; a.fun(); // 此处将输出C } } 解释一下 Java 的动态多态性这种机制

文档评论(0)

little28 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档