- 1、本文档共29页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
5、类的高级特性
第四讲 类的高级特性 目 标 掌握类的静态成员 掌握final关键字用法 掌握抽象类的定义和用法 掌握接口的定义和用法 掌握高级访问控制???????? 类的静态成员 类中的静态变量、方法或代码块属于类,而不属于某个特定的对象。 类的静态成员可以与类的名称一起使用,而无需创建类的对象。 静态变量或方法也称为类变量或类方法。 静态变量 不管创建了类的多少实例,整个类中静态变量的副本只有一个。 引用静态变量的方法: 通过引用类的任一实例 通过类的名称 静态方法 与静态方法相关的几个要点: 类的静态方法只能访问其他的静态成员 静态方法没有this 静态方法不能被覆盖为非静态方法 静态块 形式:static { ……} 如果需要通过计算来初始化静态变量,可以声明一个静态块。 静态块仅在该类被加载时执行一次。 只能初始化类的静态数据成员,而不能初始化类的非静态数据成员。 Java类属性和对象属性的初始化顺序 首先找到类中的所有静态声明语句(不管位置在哪),把他们初始化为缺省值 然后再按照书写顺序依次处理每一个static的东西 把对象属性初始化为缺省值 按照书写顺序依次处理每一个对象属性的初始化语句 最后执行构造函数 final 关键字/final类 final 修饰符可应用于类、方法和变量。 final在应用于类、方法和变量时意义是不同的,但本质是一样的:final表示不可改变。 声明为final的类不能被继承。 final 类示例: java.lang.String final 方法 在方法声明中使用 final 关键字向编译器表明子类不能覆盖(override)此方法。 在声明类中,一个 final 方法只被实现一次。 如果一个类为 final 类,那么它的所有方法都为隐式的 final 方法。 final 变量 一个变量可以声明为final,这样做的目的是阻止它的内容被修改。 声明final变量后,只能被初始化一次,然后就不能对其值进行修改。 一个final变量实质上是一个常量。 抽象类 2-1 定义:一种类型,只提供部分方法的具体实现。 语法:abstract class 类名{….} 一般情况下,抽象类既包含具体方法,又包含抽 象方法。 具体方法:既有方法的声明,又有方法的实现(即有方法体)。 抽象方法:只有方法的声明,而没有方法的实现(即没有方法体)。语法: abstract 返回类型 方法名(参数列表) 抽象类不能被实例化。 抽象类2-2 抽象类就是用来继承的 子类必须为抽象类中的所有抽象方法提供具体实现,否则,子类也将是一个抽象类 抽象类中可以声明实例变量,这些实例变量就是为了提供给子类继承的 抽象类可以有一个或多个构造函数,它是提供给子类进行调用的 特别地,抽象类中的所有方法都可以是具体方法 抽象类示例 abstract class Employee { int basic = 2000; abstract void salary();//抽象方法 } class Manager extends Employee{ void salary() { System.out.println(薪资等于 +basic*5); } } class Worker extends Employee{ void salary() { System.out.println(薪资等于 +basic*2); } } Java接口 2-1 定义:一种类型,不包含任何具体方法。换言之,所有方法都是抽象方法 语法:public interface 接口名{…} 接口不能被实例化 接口中的抽象方法不需要abstract修饰 一个类可以继承接口,而且可以同时继承多个接口。一个类继承一个接口被称作“接口继承”;通过一个类同时继承多个接口可以在Java中实现“多重继承” Java接口 2-2 接口中的方法被默认为是public的,所以在实现一个接口的时候,来自接口中的方法必须定义成public 接口中可包含基本数据类型的数据成员,但它们都默认为是public、static和final的,因此,这些数据成员是常量。 一个接口也可以继承一个或多个接口,语法为:interface 接口名 extends 接口1, …, 接口n{… } 创建接口的步骤2-1 // 有方法的接口 public interface myinterface { public void add(int x, int y); public void volume(int x,int y, int z); } // 定义程序使用的常量的接口 public interf
文档评论(0)