面向对象高级特性(上).ppt_第1页
面向对象高级特性(上).ppt_第2页
面向对象高级特性(上).ppt_第3页
面向对象高级特性(上).ppt_第4页
面向对象高级特性(上).ppt_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第五讲 面向对象高级特性(上) 主要内容 u 继承 u 包 u 访问限定词 u Object类 u final关键键字 继承的基本概念 1、继承的作用:增强了代码的复用性。 2、Java使用extends关键字定义继承。 3、Java只支持单继承,不支持多继承。 4、Java支持多层继承。 继承中的方法重写 子类可以对从父类继承来的方法进行 重写,重写过程中需要注意以下几点: (1)重写的方法应该与被重写的方法具 有相同的方法名、参数列表、返回类型。 (2)重写的方法不应该比被重写的方法 具有更严格的访问权限。 super关键字 1、在Java中使用super关键字引用父类的 成员。 2、还可以通过super(参数列表)引用父类 的构造方法。 继承中的构造方法 1、构造子类对象必须先调用父类的构造方法。 2、可以在子类的构造方法中,通过this(参数列 表)调用同类的构造方法;通过super(参数列 表)调用父类的构造方法 3、在子类的构造方法中,super(参数列表)必须 放在第一行 继承中的构造方法 4、 如果子类的构造方法中没有显式调用父类 的构造方法,那么默认调用父类不带参数的 构造方法。 5、子类能够继承父类的成员变量和成员方法 ,但是不能继承父类的构造方法。 包 v 为了类文件管理的方便以及解决命名冲突, 人们引入“包”这个概念。 v 包是按照目录存放的,在程序中以“.”分隔。 v Java编译器在编译时将程序里出现的包名生 成一个目录,例如包a.b.c中的类存放在abc目 录中。 package语句 vpackage语句用来指定包名,一般形式如下: package 包名1.包名2.包名3; vpackage语句必须写在Java源文件的第一条, 而且只能有一条。缺省package语句的包,为 无名包。 package语句 编译包含package语句的java源文件,使用如下格 式: javac d 包存放的目录 文件名.java 例如,javac d . Person.java /将类文件放到当前目录下 javac -d c:myPackage Person.java /将类文件放到c:myPackage 目录下 执行类名必须写全名:包名+类名,如: java p1.first.Person classpath环境变量 1. classpath的作用: java虚拟机从classpath设置的路径中寻找指定 的类。 2. 设置classpath环境变量的格式: set classpath=环境变量的值 如, set classpath=.;c:myPackage; classpath环境变量 3. 若需要的包已经打包成一个文件package.jar,放 在某个目录如c:temp中,则classpath应设置到文 件名: set classpath=c:temppackage.jar;. 4. 如果从不同地方下载了多个包来使用,文件名各 不相同,或放在不同目录中,设置classpath时可 用分号隔开: set classpath=.;c:pp1;e:pp3a.jar; import语句 1. import语句用来引入包中的类。 2. import语句的数量没有限制。 import语句必须放在程序 开头;如果程序中有package关键字,则必须放在package 之后一行,class之前一行。 3. import语句的格式: import myJava.io.C; /引入 myJava.io中的类C import myJava.io.*; /引入 myJava.io中所有的类,不包括子类 4. Java编译器为所有程序自动引入包java.lang。 Jdk中常见包 vjava.lang:包含java语言的核心类 vjava.awt:包含了构成抽象窗口工具集的类 vjava.io:包含能提供输入/输出功能的类 vjava.util:包含java中的常用工具包 :包含与网络相关的类 访问限定词 限定词同一类中同一包中不同包中的 子类 不同包中的 非子类 private 无限定 词 protecte d public private限定词 private成员只能被同类中的成员访问: package p1;package p1; class First class First private void func1() private void func1() void func2() void func2() func1();/func1();/privateprivate成员能够被同类中的方法所访问成员能够被同类中的方法所访问 class A class A public static void main (String public static void main (String argsargs) ) new First().func1();/new First().func1();/编译错,编译错,privateprivate成员不能被其他成员不能被其他 类访问类访问 无限定词 不加限定词的成员属于默认的访问状态,可以被 这个类本身或者与类同在一个包内的其它类访问 package p1;package p1; class First class First void func1() void func1() class A class A public static void main (String public static void main (String argsargs) ) new First().func1();/new First().func1();/编译正确编译正确 无限定词 不加限定词的成员不能被不同包中的子类 使用。 / /First.javaFirst.java package p1; package p1; public class First public class First void func1() void func1() 无限定词 (续) /Second.java package p2; import p1.*; class Second extends First public static void main(String args) new Second().func1();/编译错 protectedprotected限定词限定词 protected成员可以被不同包中的子类使用。 / /First.javaFirst.java package p1;package p1; public class First public class First protectedprotected void func1() void func1() protected 限定词 (续) /Second.java package p2; import p1.*; class Second extends First public static void main(String args) new Second().func1();/编译通过 protected 限定词 protected成员不能被不同包中的非子类访问。 / /First.javaFirst.java package p1; package p1; public class First public class First protected protected void func1() void func1() protected 限定词 (续) / /Second.javaSecond.java package p2;package p2; import p1.*;import p1.*; class Second class Second public static void public static void main(Stringmain(String argsargs) ) new First().func1();new First().func1(); / /编译错编译错 public限定词 Public限定词可以在任何时候被使用 / /First.javaFirst.java package p1;package p1; public class First public class First publicpublic void func1() void func1() public限定词 (续) / /Second.javaSecond.java package p2;package p2; import p1.*;import p1.*; class Second class Second public static void public static void main(Stringmain(String argsargs) ) new First().func1();new First().func1();/ /编译通过。编译通过。 类的限定词类的限定词 1.类类的访问访问 限定词词只有一种:public。 2. Public类类能够够被其他所有的类访问类访问 ;缺 省访问访问 限定词词的类类,只能被同一个包中的 其他类访问类访问 。 Object类 vObject类是所有java类的父类 vObject类中常见的方法: public boolean equals(Object obj) public int hashCode() protected void finalize() public String toString() toString()方法 toString()方法的返回类型为String, 描述当前对象的有关信息 当输出一个对象时,将自动调用对象的 toString()方法 可以根据需要在用户自定义类中重写 toString()方法 toString()方法举例 class Person int age; String name; public String toString() /重写Object类中的toString()方法 return “age=“ + age + “,name=“ + name; public static void main(String args) Person p = new Person(); System.out.println(p); /输出结果为age=0,name=null final关键字 final变量不能被改变 final 方法不能被重写 final类不能被继承 练习 设计一个关于复数的类(Complex类) 访问权访问权 限 类类型成员员说说明 privateintreal 成员变员变 量 privateintimaginary 成员变员变 量 publicvoidsetReal成员员方法 publicintgetReal成员员方法 publicvoidsetImaginary成员员方法

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论