- 1、本文档共31页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Object oriented advanced Java特殊关键学习及 面向对象原理进阶 * 目标 掌握类的静态成员:static 掌握继承的概念和用法:extends 掌握抽象类的定义和用法:abstract 掌握final关键字用法 掌握接口的定义和用法:interface, implements 多态示例 了解包的使用:package * 类的静态成员 类中的静态变量、静态方法或静态代码块属于类,而不属于某个特定的对象。 类的静态成员可以与类的名称一起使用,而无需创建类的对象。 静态变量或方法也称为类的变量或方法。 用static修饰符修饰,可以是变量、方法或代码块 * 静态变量 不管创建了类的多少实例,整个类中静态变量的副本只有一个。 引用静态变量的方法: 通过引用类的任一实例 通过类的名称(建议) class A { static int x = 0; A(){x++;} } A a1 = new A(); A a2 = new A(); a1.x = 100 ; a2.x = 200; int y = a1.x; 通过类实例访问 不是一个好方法 A a1 = new A(); A a2 = new A(); A.x = 100; A.x = 200; int y = A.x; 声明为static的变量实质上就是全局变量 通过类名访问 * 静态方法 与静态方法相关的几个要点: 类的静态方法只能访问其他的静态成员 静态方法没有this 静态方法不能被覆盖(重写)为非静态方法 class A{ static int i = 10; int j; static void setValue(int x) {j=x;//出错System.out.println( + i); } } 不能访问非静态变量j,可以访问静态变量i class B { static void test() { } } class C extends B{void test() {}//出错 } * 静态块 如果需要通过计算来初始化静态变量,可以声明一个静态块。 静态块仅在该类被加载时执行一次。 只能初始化类的静态数据成员。 class A { static int x;//静态成员 int y; //非静态成员 static {x=1; y=1;System.out.println(static block: + x); } } * 被继承的类称为父类 继承父类的类称为子类 执行继承时,子类将获得父类的属性,并具有自身特有的属性。 Emoloyee类: name sex Worker类: category dressAllowance Officer类: empClass vehicle 职员类,具 有姓名和性 别两个属性 工人类,继承了父 类的姓名和性别属 性外还包含类别和 是否有服装津贴属性 主任类,还包含 级别和是否配备 交通工具属性 继承 继承是面向对象编程技术的一块基石,它允许创建分等级层次的类。运用继承,可以创建一个通用类定义一系列一般特性。该类可以被更具体的类继承。 * 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;}} class Worker extends Employee { char category;//类别 boolean dressAllowance; //是否提供服装津贴Worker(String n,char s,char c,boolean
文档评论(0)