- 1、本文档共123页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
(1)Java子类的创建 子类可以从父类那里继承所有非private的成员作为自己的成员。 子类的每个对象也是父类的对象(“即是”性质),但父类对象不一定是子类的对象。 继承设计原则: 里氏代换原则 (1) Java子类的创建 举例:类的继承,创建个人类Person,再以该类为父类创建一个学生子类Student。 (1) Java子类的创建 使用继承过来的成员时,可利用“子类对象.父类成员名”格式进行。 在执行子类的构造方法之前,将先调用父类中没有参数的构造方法,帮助继承自父类的成员做初始化的操作。 严格意义上说,构造方法是不能被继承的,但子类可以调用父类的构造方法。 (2)调用父类中特定的构造方法 如果父类中有多个构造方法时,如何才能调用父类中某个特定的构造方法呢? 以Person作为父类,创建学生子类Student,并在子类中调用父类里某指定的构造方法。 在子类中访问父类的成员 使用super不但可以访问父类的构造方法,还可以访问父类的成员变量和成员方法,但super不能访问在子类中添加的成员。 访问父类成员的格式如下: super.变量名; super.方法名; 由于在子类中不能继承父类中的private成员,所以无法在子类(类外)里访问父类中的这种成员。 但如果将父类中的成员声明为protected(保护成员)的,则该成员不仅可以在父类中直接访问,同时也可以在其子类中访问。 在子类中访问父类的成员 用protected修饰的成员 可以被该类自身、同一包中的其他类及其子类访问。 用private protected修饰的成员 可以被该类自身、所有的子类(无论是否与该类处于同一包中)访问。 在学生子类Student中访问父类Person的成员 覆盖(Overriding) 与重载相似,均是Java“多态性”的体现。 覆盖是指在子类中,定义名称、参数个数与类型均与父类完全相同的方法,用以重写父类里同名方法的功能(方法实现体)。 覆盖父类的方法:子类继承父类中所有可被访问的成员方法时,若子类的方法与父类的方法同名,则不能继承,此时子类的方法是覆盖父类的方法。 在子类中覆盖的方法时,可扩大父类中的方法权限,但不能缩小其权限。 (2)用父类的对象访问子类的成员 用父类的变量访问子类的成员:只限于“覆盖”的情况发生。 格式: 父类 对象 = new 子类(); 对象 .子类方法; 4. 不可被继承的成员与最终类 最终类:用final修饰的类。该类不能有子类。 最终成员:用final修饰类的成员。修饰后,不能被子类的成员所覆盖。 成员方法:被修饰后成为最终方法,不能被子类覆盖 成员变量:用final不用static修饰则必须且只能赋值一次,不能默认。 可以定义时赋值;构造方法赋值。 注意:若同时被static和final修饰,则表示常量,若没有初始化则按默认值初始化。 (3)getClass ( ) App8_8.java,利用getClass()方法返回调用该方法所属的类。 (4)对象运算符instanceof()方法 功能 可利用对象运算符instanceof来测试一个指定对象是否是指定类或它的子类的实例; 若是,则返回true,否则返回false。 区分:getClass返回值是Class类型 举例 运算符instanceof及getName()、getSuperclass()方法的使用。 举例(续) 抽象类 抽象类Abstract class 抽象类有点类似“模板”的作用,目的是根据它的格式来创建和修改新的类。 但是并不能直接由抽象类创建对象,只能通过抽象类派生出新的子类,再由其子类来创建对象。 即:抽象类就是不能用new运算符来创建实例对象的类,它可以作为父类被它的所有子类所共享。 1、抽象类与抽象方法 抽象类的定义格式: 2、抽象类的应用 【例8.10】抽象类的应用举例,定义一个形状抽象类Shape,以该抽象类为父类派生出圆形子类Circle和矩形子类Rectangle。 //filename:App8_10.java 抽象类的说明 4、接口的继承 定义一个接口时可通过extends关键字声明该新接口是某个已存在的父接口的派生接口,它将继承父接口的所有变量与方法。 与类继承的区别:一个接口可以有一个以上的父接口,它们之间用逗号隔开,形成父接口列表。 如果接口中定义了与父接口同名的常量或相同的方法,则父接口中的常量被隐藏,方法被覆盖。 5、利用接口实现类的多重继承 多重继承:一个子类可以有一个以上的直接父类,该子类可以继承它所有直接父类的成员。 Java语言虽不支持多重继承,但可以利用接口间接地解决多继承问题。 Java中接口
文档评论(0)