- 1、本文档共37页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第四章类的高级特性 java项目课件
第四章类的高级特性 类的高级特性 目标 掌握类的静态成员 掌握继承的概念和用法 掌握final关键字用法 掌握抽象类的定义和用法 掌握接口的定义和用法 了解javadoc的使用 类的静态成员 类中的静态变量、方法或代码块属于类,而不属于某个特定的对象。 类的静态成员可以与类的名称一起使用,而无需创建类的对象。 静态变量或方法也称为类的变量或方法。 静态变量 不管创建了类的多少实例,整个类中静态变量的副本只有一个。 引用静态变量的方法: 通过引用类的任一实例 通过类的名称 静态方法 与静态方法相关的几个要点: 类的静态方法只能访问其他的静态成员 静态方法没有this 静态方法不能被覆盖为非静态方法 静态块 如果需要通过计算来初始化静态变量,可以声明一个静态块。 静态块仅在该类被加载时执行一次。 只能初始化类的静态数据成员。 继承 被继承的类称为父类 继承父类的类称为子类 执行继承时,子类将获得父类的属性,并具有自身特有的属性。 extends关键字 extends关键字用于继承类。 声明一个继承父类的类的通常形式如下: class subclass-name extends superclass-name { //类体 } 没有extends,默认父类为Object 只能有一个父类,即单继承 子类继承父类的public和protected成员 super关键字 super关键字用来解决如何直接访问或初始化从父类继承来的属性。 super有两种通用形式:调用父类的构造函数、用来访问被子类的成员覆盖的父类成员。 它用在对象的构造函数中,将构造细节通过继承链往上传递。 super()必须是在子类构造函数中的第一个执行语句。 继承示例 class Employee { String name; //姓名 char sex; //性别 Employee(String n, char s){ name = n; sex = s; } public String getName() { return name; } public char getSex(){ return sex;}} Instanceof class Student {} class Graduate extends Student {} class UndergraduateStudent extends Student {} public class st { public static void main(String []args) { UndergraduateStudent s1 = new UndergraduateStudent(); Graduate s2=new Graduate(); Student x; x=s1; //父类引用可以指向子类对象 if (x instanceof UndergraduateStudent) System.out.println(“x是UndergraduateStudent类的实例。”); else System.out.println(“x是Graduate类的实例。”); } } Object 类 Object类是类体系结构的根 Java 系统中的每个类都是 Object 类直接或间接的子类 Object 类包括在 java.lang 包中 此类定义了所有对象都具备的基本状态和行为 可以用类型为Object的变量来引用任意类型的对象 所以任何对象使用instanceof Object返回的结果都为真! 类型转换 执行自动类型转换需要两个条件: 接受转换的两种类型是兼容的 目的类型数的范围比源类型的大 强制类型转换语句的通用格式如下: (目标类型)value 方法覆盖(override) 方法覆盖是Java实现多态性机制的另一种方式。 在类层次结构中,如果子类中的一个方法与父类中的方法有相同的方法名并具有相同数量和类型的参数列表,这种情况称为方法覆盖。 当一个覆盖方法通过父类引用被调用,Java根据当前被引用对象的类型来决定执行哪个版本的方法。 可以通过super关键字调用直属父类中被覆盖的方法版本。 方法覆盖示例 class SuperClass { int a; SuperClass(){ a = 10; } public void printA(){System.out.println(父类中a =+a);} } class SubClass extends SuperClass { int a; SubClass(in
文档评论(0)