




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、面向对象(2)上次课回顾1、面向对象的概念2、类与对象3、构造函数与构造函数的重载目标1、this引用2、static关键字3、内部类4、方法的参数传递引用自身思考:在一个方法内部,我们可以调用别的对象,但我们怎样调用自己所属的对象呢?this引用class Person String name; / 名字Public Person(String name) = name;关键字 this 与对象关联它用于指示当前对象this引用this的作用1、区分类成员属性和方法的形参.2、this关键字通常用于return语句中返回当前对象的引用。见例子:Leaf.java3、在构造方
2、法中调用其它构造方法见例子:Flower.javathis引用在构造器中使用this的注意点:在构造器中用this只能调用另外一个构造器,不能调用两个。除此以外,构建器调用必须是我们做的第一件事情,否则会收到编译程序的报错信息。static关键字定义静态成员变量static 类型 成员变量名;特点在类载入时创建可以被各实例对象共享可直接通过“类名.静态成员变量名”的方法访问该值注意:不能把方法体内变量声明为静态例如static int age = 15;System.our.println(Person.age);例子:TestChinese.javastatic关键字确定的变量/常量/类将在
3、该类被加载的时候创建且共享它静态成员提供了一个同类对象的共享机制;把一个类的成员说明为 static 时,这个类无论有多少个对象被创建,这些对象都共享这一个 static 成员;静态成员属于类,它不是属于对象的。实质是类的全局数据static关键字定义静态方法修饰符 static 返回类型 方法名(参数列表)特点在静态方法中不能调用类中的非静态成员/方法在静态方法中不能使用this和super关键字在该类的非静态方法中可以直接调用静态方法main方法也是静态方法例如:public static void sing()Static关键字例子:TestChina2.javaStatic关键字定义静
4、态代码块static 特点常用于类属性的初始化该部分代码当类被加载时执行,且只执行一次例子:TestStaticCode.java理解main方法的语法理解main方法的语法public static void main(String args)使用String类型的数组参数C:java myjava 1 2 3单态设计模式Singleton模式主要作用是保证在Java应用程序中,一个类Class只有一个实例存在。 public class Singleton private Singleton() /注意这是private 只供内部调用 private static Singleton in
5、stance = new Singleton(); /这里提供了一个供外部直接访问本class的静态方法 public static Singleton getInstance() return instance; 内部类(nested classes)将一个类定义置入另一个类定义中就叫作“内部类”。利用它可对那些逻辑上相互联系的类进行分组并可控制一个类在另一个类里的“可见性”。内部类对象保存了一个对外部类对象的引用。OuterClassName.this代表外部类对象的引用InnerClassName.this代表内部类对象的引用class Outerint outer_i = 100;vo
6、id test() Inner in = new Inner(); in.display();class Inner void display() System.out.println(display: outer_i = + outer_i); 内部类 类中定义的内部类1、Inner类是在Outer内部定义的2、在Inner类中可以访问Outer类中的成员属性outer_I;3、在Outer类中可在方法test()中创建内部类Inner的对象;4、通过Outer类的对象调用test()方法最终就可以执行Inner类中的方法内部类 类中定义的内部类在内部类对象保存了一个对外部类对象的引用,当内
7、部类的成员方法中访问某一变量时,如果在该方法和内部类中都没有定义过这个变量,内部类中对this的引用会被传递给那个外部类对象的引用。类中定义的内部类特点1、内部类可以直接访问外部类的成员,反之则不行。2、内部类可以声明为private或protected。3、内部类成员只有在内部类的范围之类是有效的。private内部类调用方式:在外部类的方法中实例化内部类,并调用自己的方法实例化外部类,并调用包含内部类的方法内部类 类中定义的内部类例子:InnerClassDemo.javastatic内部类定义格式修饰符 static class namestatic内部类特点:static内部类可以象一
8、个普通外部类一样直接创建该对象。static内部类只能访问外部类中的静态成员或方法。static内部类可以声明static成员,但非static的内部类不可以。修饰符没有任何限制。public class StaticInnerDemo String name = Tom; void PrintName() System.out.println( Outer name : +name); public static class Inner int age = 10; void PrintAge() System.out.println( inner age : +age); public st
9、atic void main(String args) Inner inner = new Inner(); inner.PrintAge();static内部类1、Inner为静态内部类。2、 Inner不能访问names属性和PrintName()方法。3、在外部类中可以直接创建该类的对象。内部类如何被外部类引用将内部类声明为非private的就可以通过外部类创建一个内部类的对象引用,并可通过该引用调用内部类自己定义的方法。声明调用方法:OuterClass outer = new OuterClass();OuterClass.InnerClass inner = outer.new I
10、nnerClass ();例子:InnerClassDemo.java方法和作用域中的内部类内部类并非只能在类里定义,也可以在几个程序块的范围之内定义内部类。特点:可访问外部类的成员变量。只能访问所在方法中的final类型的局部变量,因为用final定义的局部变量相当于一个常量,它的生命周期超出方法运行的生命周期。该类型的内部类调用方法:直接通过外部类来调用内部类所在的方法。OuterClass.innerOfOuterMethod();方法和作用域中的内部类public class InOut String str = new String(Between); public void ame
11、thod(final int iArgs) fianl int a = 12; class Bicycle public void sayHello() System.out.println(str); System.out.println(a); System.out.println(iArgs); Bicycle bicycle = new Bicycle(); bicycle.sayHello(); 1、str为外部类的成员变量。2、iArgs和 a都是方法amethod的局部final变量。InOut inout = new InOut( );Inout.amethod( 5);更典型
12、的一种情况是,一个外部类拥有一个特殊的方法,它会返回指向一个内部类的句柄。见例子: Parcel.java内部类(nested classes)方法的参数传递基本数据类型的参数传递基本类型的变量作为实参传递,并不能改变这个变量的值。方法中的形式参数相当与局部变量,方法调用结束后自行释放,不会影响到主程序的同名变量。例子:PassValue.java方法的参数传递基本数据类型的参数传递内存分配方法的参数传递引用数据类型的参数传递Java语言在给被调用方法的参数赋值时,只采用传值方式。引用数据类型传递也是这个变量的值本身,即对象的引用(句柄),可通过引用柄来改变对象的内容,但不能改变对象的引用。例子:PassRef.java方法的参数传递使用Java的文档注释文档注释:/* */javadoc工具例如:/* * Title: InOut * Description:在方法中定义内例子 * Copyright: Copyright (c) 2006 * Company: tsinghua * author xiaoyanni * version 1.0 */javadocoptionspackagenamesso
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 5-1《阿Q正传(节选)》教学设计 2023-2024学年统编版高中语文选择性必修下册
- 2024-2025学年人教版(2024)七年级英语上册寒假教学设计day 5
- 第四章 第3节 平面镜成像2024-2025学年新教材八年级上册物理新教学设计(人教版2024)
- 粤教版高中信息技术必修一1.2.2 信息技术的应用与影响 教学设计
- 2025年湖北省省直辖行政单位单招职业适应性测试题库完美版
- 第五单元课题2 化学方程式教学设计-2024-2025学年九年级化学人教版(2024)上册
- 浙江省人教版历史与社会八年级下册7.3《资本主义的扩展》教学设计3
- 2025年湖北三峡职业技术学院单招职业适应性测试题库含答案
- 山东省泰安市2023-2024学年高三上学期1月期末考试地理试题(解析版)
- 2025年河北建材职业技术学院单招职业倾向性测试题库带答案
- 四川省成都市2024年七年级《英语》上册月考试题与参考答案
- 2025(人教版)数学一年级下册全册教学案
- 苏科版 八年级物理下册 第六章 综合测试卷(2025年春)
- 2025年中学生心理健康教育心得体会例文(5篇)
- 小学生学会公平与公正的行为主题班会
- 2025年湖南交通职业技术学院高职单招职业适应性测试近5年常考版参考题库含答案解析
- 江苏省南通市2025届高三第一次调研测试数学试题(南通一模)(含解析)
- 《大学物理矢量》课件
- 梅大高速塌方灾害调查评估报告及安全警示学习教育
- 福建省部分地市2025届高中毕业班第一次质量检测 生物试卷(含答案)
- 2024-2025学年上学期上海初中英语七年级期末模拟试卷2
评论
0/150
提交评论