版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、2010-02,1,2020/8/24,1,第五章 构造方法和静态成员,2010-02,2,回顾,方法 属性 面向对象程序设计 JDK提供的类,2010-02,3,目标,构造方法 对象的初始化 this关键字 static静态成员与方法 对象数组,2010-02,4,构造方法,在使用对象之前,必须要根据类的定义构造并初始化一个对象(指定其属性的值) 在构造对象时,构造方法将被运行,用来将对象的各个属性初始化为所希望的状态 构造方法的用途比较特殊,没有返回值,通常都是通过“new”运算符来调用,而且不能对已经存在的对象调用构造方法。,2010-02,5,构造方法的定义与特征,构造函数是类的一种特
2、殊方法,每次创建类的实例都会调用它,访问修饰符,(), / 构造函数的主体 ,语法:,public class Employee public Employee() empName = “不详”; empGender = 男; empGualification = “不详”; empSalary = 0; ,示例:,2010-02,6,构造方法,初始化对象(构造方法) 构造方法的方法名与类名一样 构造方法可以带多个参数,也可以没有参数 构造方法没有返回值 构造方法总是通过“new”运算符使用 构造方法可以重载 程序中如果没有为类提供任何构造方法,编译器将自动提供一个默认的构造方法(没有参数),
3、2010-02,7,参数化构造方法,访问修饰符, (参数列表),/ 构造函数的主体 ,语法:, / 参数化构造函数 Employee(string strQualification) _qualification = strQualification; ,示例:,在带有参数的构造函数中,类在实例化时必须传递参数,否则该构造函数不能被执行,在构造对象时,new运算符调用了类的构造方法,还可以在这个时候把对象的属性初始化成指定的状态。对象一旦构造完成,就不能再一次使用构造方法来重新设置属性的值。,2010-02,8, public class Employee private String emp
4、Name; private char empGender; private String empGualification; private int empSalary; public Employee(String name, char gender, String gualification, int salary) empName = name; empGender = gender; empGualification = gualification; empSalary = salary; public static void main(String args) Employee ob
5、jEmployee = new Employee(“李明”, 男, “本科”, 3500); System.out.println(objEmployee.getInfo(); ,构造方法,2010-02,9,构造方法重载, public Employee(String name, char gender, String gualification, int salary) empName = name; empGender = gender; empGualification = gualification; empSalary = salary; public Employee(Strin
6、g name, char gender) empName = name; empGender = gender; empGualification = 不详; empSalary = 0; ,传递不同个数的参数 传递个数相同但类型不同的参数,2010-02,10,对象初始化过程,在对象实例化的过程中,有多种方法对对象的各个属性进行初始化。通常Java在构造对象时按照以下顺序进行操作: 所有属性被初始化为默认值; 按照声明初始化属性; 执行初始化块; 嵌套调用构造函数;,2010-02,11,属性默认初始化,如果对象在实例化时,其属性(状态)既没有通过构造方法进行初始化,也没有通过声明属性时赋值
7、进行显式初始化,将会自动地赋予默认值: 数值类型使用 0; 布尔类型使用 false; 引用类型使用 null; 注意: 局部变量不会被自动赋值,必须被明确地初始化,2010-02,12,属性初始化,对象实例化时,其属性(状态)初始化的方法有很多,除了使用构造方法进行初始化以外,还可以在声明属性时通过简单地赋值进行初始化,以设置一个基本的内容:, private String address = “地址不详”; private int point = 0; ,2010-02,13,This的使用,This关键字在类定义中提供了当前对象的成员或构造方法的途径 this仅限于在构造函数、类的方法和
8、类的实例中使用。 用来访问当前对象的数据成员,使用形式如下: this.数据成员 用来访问当前对象的成员方法,使用形式如下: this.成员方法(参数) 当有重载的构造方法时,用来引用同类的其他构造方法,其使用形式如下: this(参数) 注:在访问成员属性或成员方法时可以省略 如果方法中传入参数和类属性同名,一定需在类字段前加上this,2010-02,14,final 变量/属性,一个变量或属性可以声明为final,这样做的目的是阻止它的内容被修改,成为常量 声明final变量/属性后,只能被初始化一次,然后就不能对其值进行修改,class FinalDemo public static
9、void main(String args) final int noChange = 20; noChange = 30; ,2010-02,15,类的静态成员,用static修饰符修饰,可以是变量、方法或代码块 类中的静态变量、方法或代码块属于类,而不属于某个特定的对象。 类的静态成员可以与类的名称一起使用,而无需创建类的对象。 静态变量或方法也称为类的变量或方法。,2010-02,16,静态属性,用static修饰符修饰的数据成员属于类的静态数据成员 静态属性特点: 不管创建了类的多少实例,整个类中静态变量的副本只有一个。 static类数据成员仍属于类的作用域,还可以使用public
10、static、 private static等进行修饰。修饰符不同,可访问的层次也不同。 引用静态变量的方法: 在类的内部可以直接使用静态变量 从类的外部可以通过类名访问静态的公共变量 从类的外部可以通过类的任一实例访问静态的公共变量,不推荐使用,2010-02,17,静态属性,public class StaticDemo public static int x = 0; public StaticDemo() x+; ,public class Test public static void main(String args) StaticDemo d1 = new StaticDemo(
11、); StaticDemo d2 = new StaticDemo(); d1.x = 100; d2.x = 200; ,2010-02,18,静态方法,与静态方法相关的几个要点: 类的静态方法只能访问其他的静态成员 静态方法没有this 静态方法不能被覆盖 可以通过类名调用静态方法(也可以使用对象调用,但不推荐);,public class StaticDemo public static void staticMethod() public void nonStaticMethod() public static void main(String args) StaticDemo d1
12、= new StaticDemo(); d1.nonStaticMethod(); StaticDemo.staticMethod(); ,2010-02,19,静态方法, public class StaticSample int x; static int y; void foo() x = 1; / 正确,等价于this.x = 1 y = 1; / 正确,等价于Test.y = 1 static void goo() /x = 1; / 错误不能访问 this.x y = 1; / 正确,等价于Test.y = 1 ,2010-02,20,静态初始化块,如果需要通过计算来初始化静态变量,可以声明一个静态块 静态块仅在该类被加载时执行一次 只能初始化类的静态数据成员 静态初始化器不是方法,没有方法名、返回值和参数列表,class TryInitialization static int values = new int10; /静态数组成员 static for(int i=0; ivalues.length; i+) valuesi = (int)(100.0*Math.random(); ,2010-02,21,在对象数组中每一个元素都是指向某个对象的引用(对象属于同一个类型)。例如:定义
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 银川餐厅饭堂外包合同
- 新版人教版物理九年级知识点速记
- 2025版职业电竞选手转会交易合同
- 2026年初级统计师《统计基础知识与统计实务》真题
- 2026中药学考试题库及答案(荐)试卷及答案
- 新生儿保暖与散热技巧
- 电子设备销售与维修合同
- 气胸患者胸腔闭式引流护理观察要点
- 护理人文沟通中的反馈技巧
- 生产硅烯复合远红外加热板项目可行性研究报告模板-立项申报用
- 测试验证管理办法
- 精神科常见意外事件防范预案及应急处理流程
- 2025全球汽车供应链核心企业竞争力白皮书
- 2024年中考三模 模拟卷 数学(重庆卷)(答题卡)
- 酒店供应商管理制度
- T/CSPSTC 68-2021地铁盾构隧道结构修复加固技术规程
- 烟草证办理协议书
- GB/T 15237-2025术语工作及术语科学词汇
- SLS快速成型技术
- 展望未来的智能船舶技术
- 2025年森林管护员考试题及答案
评论
0/150
提交评论