版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、JAVA初级编程初级编程 第四章 类和对象(二) 刘彬 1本次课程目标本次课程目标方法重载方法重载重载构造方法重载构造方法thisthis关键字关键字StaticStatic关键字关键字块块包包2本章词汇本章词汇this这,这个这,这个static静态的静态的package包裹,包包裹,包import引入,导入引入,导入overloaded重载,超载重载,超载overloaded method方法重载方法重载方法方法4方法的定义方法的定义方法的名称方法的名称参数列表参数列表方法的主体方法的主体方法返回类型方法返回类型方法定义与调用方法定义与调用 和C的函数一样,Java中的方法是执行某个功能的
2、代码块.定义的形式也基本和函数一样修饰符修饰符 返回类型返回类型 方法名方法名(参数列表参数列表) 异常异常 方法主体方法主体 return var Java中的方法可以定义在中的方法可以定义在class块中的任何地方块中的任何地方 Java中的方法通过引用名中的方法通过引用名.方法名的形式调用方法名的形式调用方法原型方法重载方法重载 在在JavaJava中还允许方法同名中还允许方法同名, ,被称为方法重载被称为方法重载 用于定义一组方法,这些方法具有相同的名称,并执行类用于定义一组方法,这些方法具有相同的名称,并执行类似的操作,但是却使用不同的参数列表;似的操作,但是却使用不同的参数列表;
3、编译器会根据调用时传递的实际参数自动判断具体调用的编译器会根据调用时传递的实际参数自动判断具体调用的是哪个重载方法,如:是哪个重载方法,如:/*abs方法的重载*/int abs(int x) float abs(float x) double abs(double x) long abs(long x) 方法重载的三大原则方法重载的三大原则 方法名相同方法名相同 参数不同(可以有三方面的不同)参数不同(可以有三方面的不同)数量不同数量不同类型不同类型不同顺序不同顺序不同 同一个作用域同一个作用域 温馨提示:方法重载跟方法的返回值类型没有任何关系温馨提示:方法重载跟方法的返回值类型没有任何关系
4、。也就是说,只有返回值不同的方法不能构成重载。也就是说,只有返回值不同的方法不能构成重载。/*错误的方法重载*/void fun(int x) ;int fun(int x) ;方法重载的两种方式之一方法重载的两种方式之一 利用不同数据类型的参数重载; 对于带有相同数量参数但参数类型不同的重载方法,编译器可以区分它们,如: 只要所有参数式样都是唯一的,就可以使用多个重载; 很多编程语言已经重载了输出方法,以便您可以用相同的方法名称输出任何类型的数据。int square(int x) float square(float x) double square(double x) 方法重载的两种方式
5、之二方法重载的两种方式之二 利用不同数量的参数重载,如: 将调用与参数最匹配的方法,如果没有方法得出最佳匹配,那么编译器将报错;编译器解决重载的方式与方法定义的顺序无关;重载不考虑方法的返回值类型。/*函数定义*/int fun(int n1) int fun(int n1, int n2, int n3) /*函数调用*/fun(a);fun(x, y, z);方法重载的作用域规则方法重载的作用域规则 只有属于同一个类的方法才能构成重载。class First public void show() class Second public void show(int x) 不构成重载课堂练习课
6、堂练习1在Java中,对于成员方法float add(float f1, float f2) 下面选项()是对该成员方法的重载。int add(int n1, int n2) float add(float f) float add(float f2, float f1) void add(float f1, float f2) void add(float f1, float f2, float x) 课堂练习课堂练习2在Java中,下列方法()不能与int fun(int x) 构成方法重载。int fun(int x, int y) float fun(int x) int fun(fl
7、oat x) int fun(int x, int y, int z) 关于方法重载的重要提示关于方法重载的重要提示请勿将功能完全不一样的方法进行重载!重载构造方法重载构造方法 方法重载的一个重要应用就是重载构造方法; 可以定义一组构造方法,使其构成重载关系,从而方便使用者能够灵活机动地以各种不同的方式来实例化对象。重载构造方法示例重载构造方法示例class MyTime /定义时间类 private int mHour, mMinute, mSecond; /三个成员变量,时、分、秒 public MyTime() /构造方法重载1 mHour = 0; mMinute = 0; mSeco
8、nd = 0; public MyTime(int hour) /构造方法重载2 mHour = hour; mMinute = 0; mSecond = 0; public MyTime(int hour, int minute) /构造方法重载3 mHour = hour; mMinute = minute; mSecond = 0; public MyTime(int hour, int minute, int second) /构造方法重载4 mHour = hour; mMinute = minute; mSecond = second; public void display()
9、/显示时间信息的方法 System.out.println(mHour + : + mMinute + : + mSecond); 重载构造方法示例(续)重载构造方法示例(续)/*测试时间类*/public class Test /*main方法,程序入口*/ public static void main(String args) /分别调用不同的构造方法来初始化时间对象 MyTime t1 = new MyTime(); /调用重载方式1 t1.display(); MyTime t2 = new MyTime(8); /调用重载方式2 t2.display(); MyTime t3 =
10、new MyTime(8, 30); /调用重载方式3 t3.display(); MyTime t4 = new MyTime(8, 30, 30); /调用重载方式4 t4.display(); /*使用重载构造方法可以使初始化对象的方式灵活机动,大大方便类的使用者。*/对象在内存中的存放形式对象在内存中的存放形式成员方法1成员方法2成员方法n成员变量1成员变量2成员变量n成员变量1成员变量2成员变量n成员变量1成员变量2成员变量n对象1对象3对象2每个对象都有自己独立的数据成员,但是所有的对象共享成员方法。this引用引用 一个类可以创建很多对象,每个对象有属于的自己的成员. 上面我们提
11、到调用成员需要通过引用名.成员的方式 那么如果想在类的内部调用当前对象的成员,为了获得引用而使用new去创建新的对象就完全不符合我们的需求了 Java在每个方法内部提供了一个隐含的引用this,该引用永远指向当前正在操作的对象使用使用thispublic class StudentString name;public void study() System.out.println(+”在学习”); 默认情况下可以省略默认情况下可以省略thispublic class StudentString name;public void study() System.out.print
12、ln(name+”在学习”); this.成员成员 当局部变量与成员属性的命名发生重名的时候,根据就近原则会默认调用同名的局部变量public class BankCardString cardNo;String cardPwd;public BankCard(String cardNo,String cardPwd) this.cardNo=cardNo;this.cardPwd=cardPwd; public BankCard(String cardNo)this.cardNo=cardNo;cardPwd=“888888”;如果需要访问成员属性那么要显示如果需要访问成员属性那么要显示的加
13、上的加上this表示是当前对象的成表示是当前对象的成员变量员变量this() 如果在类中有多个构造方法,那么可以通过this在某一个构造方法中调用另一个构造方法,但必须是在构造方法中的第一句,并且每个构造方法最多只调用一次,根据参数指定调用的构造方法public class BankCardString cardNo,cardPwd;public BankCard(String cardNo,String cardPwd) this.cardNo=cardNo;this.cardPwd=cardPwd; public BankCard(String cardNo)this(cardNo,”88
14、8888”);类的静态成员类的静态成员 正常情况下类的成员是属于某一个对象,访问成员需要通过这个对象访问,同时成员属性的生命周期同对象生命周期 可以使用static关键字将成员属性或者方法修饰为静态 一旦修饰为静态则表示该成员属于类,其生命周期不再受对象影响静态成员变量静态成员变量 在成员变量前加在成员变量前加static关键字,可以将其声关键字,可以将其声明为明为静态成员变量静态成员变量; 如果类中成员变量被定义为静态,那么不论如果类中成员变量被定义为静态,那么不论有多少个对象,静态成员变量只有一份内存有多少个对象,静态成员变量只有一份内存拷贝,即所有对象共享该成员变量;拷贝,即所有对象共享
15、该成员变量; 静态成员变量的作用域只在类内部,但其生静态成员变量的作用域只在类内部,但其生命周期却贯穿整个程序。命周期却贯穿整个程序。静态成员变量示例静态成员变量示例class Dog public static int count = 0; /静态成员变量 public Dog() /构造方法count+; public class Test public static void main(String args) System.out.println(当前狗的数量是: + Dog.count); Dog d1 = new Dog(); Dog d2 = new Dog(); System.
16、out.println(当前狗的数量是: + Dog.count); 静态成员变量的注意事项静态成员变量的注意事项 和程序同生命周期;和程序同生命周期; 在没有实例化对象时,可以通过类名访问静在没有实例化对象时,可以通过类名访问静态成员变量;态成员变量; 也可以通过对象访问静态成员变量,但不论也可以通过对象访问静态成员变量,但不论使用的是哪个对象,访问到的都是同一个变使用的是哪个对象,访问到的都是同一个变量;量;静态成员方法静态成员方法 在成员方法前加在成员方法前加static关键字,可以将其声关键字,可以将其声明为明为静态成员方法静态成员方法; 静态成员方法只能对类的静态成员变量进行静态成员
17、方法只能对类的静态成员变量进行操作;操作; 静态成员方法没有静态成员方法没有this引用;引用; 在没有实例化对象时,可以通过类名访问静在没有实例化对象时,可以通过类名访问静态成员方法。态成员方法。静态成员方法示例静态成员方法示例class Dog private static int count = 0; /静态成员变量 public Dog() count+; /显示数量的方法,静态成员方法 public static void displayCount() System.out.println(当前狗的数量是: + count); public class Test public sta
18、tic void main(String args) /没有实例化对象之前,直接通过类名调用静态成员方法 Dog.displayCount(); Dog d1 = new Dog(); Dog d2 = new Dog(); Dog.displayCount(); 静态成员小结静态成员小结 静态成员包括静态数据成员和静态成员方法; 静态成员属于整个类而不是属于某个对象,它被该类的所有对象共享; 访问静态成员时一般通过类名访问,也可以通过对象访问; 静态成员也受访问权限的约束; 静态成员方法不能操作非静态成员; 静态成员方法没有this引用。块块 初始化对象的属性值除了使用构造方法以外还可以使用
19、 表示的代码块来进行 代码块分为两种,分别为初始化块和静态块初始化块初始化块 初始化块由一对独立于其他域的组成,在对象被创建的时候被调用,与构造方法的区别在于无论你执行哪个构造方法,这个初始化块都会被执行,且在构造方法前执行public class ClassName/初始化块静态块静态块 初始化块和构造方法都会在对象被创建的时候执行,假设我们只希望某个工作只在对象第一次被创建的时候执行,以后再也不执行的话,那么需要使用静态块public class ClassNamestatic/静态块包包 有时候,类和类的名称可能发生冲突; Java提供了把类名空间划分为更容易管理的块的机制,这就是包; 包允许将类组合成较小的单元,类似于文件夹; 有助于避免命名冲突,分属不同包的类即便名称相同也不会引起误会; 能在包与包之间对于类
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 碳排放末端治理方案
- 数据中心灾备中心建设方案
- 2026年数据结构与数据库技术要点解析
- 2026年英文阅读能力与词汇积累试题
- 2026年电信公司面试热点预测题
- 2026年大数据技术应用与数据处理能力提升题目集
- 2026年劳动法知识测试题集
- 华泰证券苏州营业部2026秋招投资顾问岗无领导小组讨论题目
- 2026年化肥系统版农资监管知识题库
- 2026年垃圾分类督导员面试常见问题及回答
- 2026年广东广州市中考模拟考试化学试卷(含答案)
- 2026内蒙古通辽市科尔沁左翼后旗招聘政府专职消防员29人备考题库及答案详解【有一套】
- 电力设备行业储能2026年行业策略:拐点已至全球储能爆发在即
- 初中七年级地理跨学科主题导学案:华夏骨肉·山水相连-数字人文视野下的台湾区域探究
- 补锂技术教学课件
- 2026年《必背60题》党校教师高频面试题包含详细解答
- DB3717∕T 30-2025 芍药鲜切花采后处理技术规程
- 2025上海中考地理必考知识点清单
- 食品用洗涤剂产品生产许可证实施细则2025
- 2025年行政执法类专业科目考试真题(附答案)
- (行业典型)计量技术比武考试(选择题)试题库(附答案)
评论
0/150
提交评论