第03章 java面向对象.ppt
文本预览下载声明
3.Java的6种变量类型 类变量包括在类中定义的静态数据成员以及在接口中声明的静态或非静态的数据成员。 实例变量是在类体中声明的非静态变量。 方法参数是用来传入方法体的。 构造函数参数是用来传入构造函数的。 异常处理参数用来传入一个try语句中的catch块的。 局部变量是在一个代码块或一个for语句中声明的变量 lass Parent{ int i=10;// 父类变量 public void setI(int i){ this.i=i; } public int getI(int i){ return this.i;//如果改为return i;呢 } } public class Son extends Parent{ int i=11;// 子类与父类同名的变量 public void setI(int i){ this.i=i; } public static void main(String args[]){ Son son=new Son(); System.out.println(son.i=+son.i); son.setI(100); System.out.println(After setI(100) : son.i=+son.i); Parent parent=son; System.out.println(See son as Parent : parent.i=+parent.i); System.out.println(See son as Parent : son.i=+son.i); System.out.println(See son as Parent : son.getI(200)=+son.getI(200)); System.out.println(See son as Parent : new Parent ().getI(200)=+new Parent().getI(200)); } } 输出: son.i=11 After setI(100) : son.i=100 See son as Parent : parent.i=10 See son as Parent : son.i=100 See son as Parent : son.getI(200)=10 See son as Parent : new Parent ().getI(200)=10 3.13 内部类 一个类可以声明包含另一个类,被包含的类称为内部类,直接包含内部类的类称为外部类,在内部类之外但不包含内部类的类称为外围类。我们在设计图形化组件的“事件”时,经常会用到“内部类”。内部类和接口是Java引以为傲的两个部分,接口部分地实现了多继承,而内部类完整的实现了多继承。当有些逻辑不容易实现时,有时用内部类可以较简单和优雅地实现。 Why: What: How: 3.13 内部类 1. 为什么要设计内部类 (1)准备实现某个interface,使自己能创建和返回一个引用。 (2)要解决一个复杂的问题,并希望创建一个类,用来辅助自己的程序,同时不愿意把类的细节公开,达到隐藏内部类的目的。其实是一种设计模式。 (3)一个内部类的对象能够访问外部类,包括私有数据。当A类对于B类需要完全公开时,又不想将A类定义为public的,此时,将B类定义为A类的内部类即可,此时达到隐藏外部类的目的。 (4)对于同一个包中的其他类来说,内部类能够隐藏起来,达到隐藏内部类的目的。 (5)匿名内部类可以很方便的定义回调。 (6)使用内部类可以非常方便的编写事件驱动程序。 (7) 实现多继承。即原先需由一个外部类继承多个类,改为多个内部类分别继承不同的类。 2. 内部类分两种情形 (1) 为类的成员,即在类中方法外定义一个类,实例成员内部类作为外部类的实例成员,静态成员内部类作为外部类的静态成员。 (2) 在方法中定义一个类(局部内部类与匿名内部类)。 3. 内部类所处环境 内部类可以是其它类的成员;可以在一个语句块的内部定义;可以在表达式内部匿名定义。 3.11.2 多态的具体实现 1. 方法的重载 重载表现为同一个类中方法的多态性。一个类中可以定义多个参数不同的同名方法,程序编译时,究竟执行重载同名方法中的哪一个,取决于调用该方法的实际参数的个数、参数的数据类型和参数的次序。称为编译时多态或静态多态。 Why: What: How: 2. 实例成员变量和静态成员的隐藏 如果父类中的实例成
显示全部