JAVA程序设计ch05.面向对象基础.ppt_第1页
JAVA程序设计ch05.面向对象基础.ppt_第2页
JAVA程序设计ch05.面向对象基础.ppt_第3页
JAVA程序设计ch05.面向对象基础.ppt_第4页
JAVA程序设计ch05.面向对象基础.ppt_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

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

文档简介

第五章第五章 面向对象基础面向对象基础 JavaJava程序设计程序设计 . cn http:/cadcg.hfut.e 路路 强强 Lu Qiang, 2009 Hefei University of Technology , School of Computer and Information PagePage 2 2 / 4/ 42 2 本章学习提示 本章我们主要学习面向对象编程的基本概念。本章我们主要学习面向对象编程的基本概念。 封装、继承、多态 访问控制符的使用 Static 和 final 的使用 hapterhapter5 5 面向对象基础面向对象基础 Lu Qiang, 2009 Hefei University of Technology , School of Computer and Information PagePage 3 3 / 4/ 42 2 目目 录录 面向对象概念面向对象概念1 访问控制符访问控制符3 2类和对象类和对象 内部类内部类5 static 或者 类名 对象变量; 对象变量=new 类名(参数1,参数2,); hapterhapter5 5 面向对象基础面向对象基础 Lu Qiang, 2009 Hefei University of Technology , School of Computer and Information PagePage 1717 / 4/ 42 2 类的定义 /创建一个新人物 class People private String name, address; public void setInfo(String newname, String newaddress) name = newname; address = newaddress; public String toString() return “+ name + “, “ + address + “; public class ch05_01_People public static void main(String args) People someguy=new People(); someguy. setInfo( “佐助“, “火影村“ ); System.out.println(someguy.toString(); hapterhapter5 5 面向对象基础面向对象基础 Lu Qiang, 2009 Hefei University of Technology , School of Computer and Information PagePage 1818 / 4/ 42 2 声明对象时的内存模型 当用People类声明一个对象someguy: People someguy = new People(); 内存模型 仅建立了“someguy”对象的引用(reference) 尚未真正分配内存空间 hapterhapter5 5 面向对象基础面向对象基础 Lu Qiang, 2009 Hefei University of Technology , School of Computer and Information PagePage 1919 / 4/ 42 2 对象分配内存后的内存模型 当系统见到 someguy. setInfo( “佐助“, “火影村“ ); 做两件事: 为x和y成员变量分配内存,即类的所有成员变量 被分配内存空间,然后执行构造方法中的语句. new运算符在为name和address成员变量分配内存 后,将返回一个引用 给对象 someguy 。 hapterhapter5 5 面向对象基础面向对象基础 Lu Qiang, 2009 Hefei University of Technology , School of Computer and Information PagePage 2020 / 4/ 42 2 对象的初始化和构造方法 构造方法是一个类方法中方法名与类名相同的类方法, 它的作用是当使用new关键字创建一个对象时,自动 调用并对新建对象进行初始化操作. 构造方法的特点特点 构造方法与类名相同 构造方法没有返回值,不定义返回类型 构造方法可以重载,针对参数数量和类型定义多个同名构造方 法 构造方法可以继承,子类可以继承父类的构造方法 构造方法不能由编程人员显式地直接调用,它是在对象创建时 由newnew运算符运算符自动调用的 构造方法只用来对类实例进行初始化,目的在于简化初始化操 作 在Java中,对象的创建和初始化是统一创建和初始化是统一的两者缺一不可 hapterhapter5 5 面向对象基础面向对象基础 Lu Qiang, 2009 Hefei University of Technology , School of Computer and Information PagePage 2121 / 4/ 42 2 构造方法构造方法的作用 构造方法的作用 对象初始化 引入更多的灵活度(变量赋值或更复杂的操作) 类中可以不定义构造方法 每个类都至少有一个构造方法每个类都至少有一个构造方法,如果程序员没有为类定义构 造方法,系统会自动为该类生成一个默认的构造方法。 默认构造方法的名字与类名相同,它的参数列表和方法体均为 空,自动将所有实例变量初始化为默认值 (数值型为0,布尔型为 false,字符型为u0000,对象型为null ). 一旦定义了自己的构造方法,默认构造方法将不再起作用. hapterhapter5 5 面向对象基础面向对象基础 Lu Qiang, 2009 Hefei University of Technology , School of Computer and Information PagePage 2222 / 4/ 42 2 Code /如何将没有设计构造器的类添加构造器 / 研究带有构造器的类与没有构造器的类之间的区别 class Student /定义 Student 类 static long sum=0; String name; String address; String grade; static int score; public static long collect() /定义类的方法 sum+=score; return sum; public void public void setInfo(StringsetInfo(String x1,String x2,String x3) x1,String x2,String x3) name=x1; address=x2; grade=x3; name=x1; address=x2; grade=x3; public void setScore(int y) score=y; public class ch05_04_Student public static void main(String args ) Student zhang=new Student(); /创建Student类的对象 zhang. setInfosetInfo (“张三”, “屯溪路”, “计算机学院“); zhang.setScore(90); zhang.collect(); Student wang=new Student(); /创建Student类的对象 wang. setInfosetInfo (“王五“, “屯溪路“, “计算机学院 “); wang.setScore(85); System.out.println (+zhang.address+zhang.grade); System.out.println (+wang.address+wang.grade); System.out.println ( “总成绩是 “+wang.collect( ); 引用getMessage()方法对Student类进行初始化 hapterhapter5 5 面向对象基础面向对象基础 Lu Qiang, 2009 Hefei University of Technology , School of Computer and Information PagePage 2323 / 4/ 42 2 Code /采用构造方法实现上述功能,研究带有构造器的类与没有构造器的类之间的区别 class Student static long sum=0; String name; String address; String grade; static int score; public static long collect() /定义类的方法 sum+=score; return sum; Student (String x1, String x2, String x3, int y) name=x1; address=x2; grade=x3; score=y; public class ch05_05_Student public static void main(String args ) Student zhang; zhang=new Student(“张三“,“屯溪路“, “计算机学院“,90); zhang.collect(); Student wang=new Student (“李四“,“屯溪路“, “计算机学院“,85); System.out.println( + zhang.address + zhang.grade); System.out.println( + wang.address + wang.grade); System.out.println( “ 总成绩是 “+ wang.collect(); 当类使用new创建对象时,自动调用与类名相同 的构造方法,同时将参数带入初始化的成员变量 hapterhapter5 5 面向对象基础面向对象基础 Lu Qiang, 2009 Hefei University of Technology , School of Computer and Information PagePage 2424 / 4/ 42 2 目目 录录 面向对象概念面向对象概念1 访问控制符访问控制符3 2类和对象类和对象 内部类内部类5 static private double x; private double y; private double y; private(私有的)关键字用来确保可以访问这些实 例变量的只能是Point2D类本身的方法。 在大多数实际应用的类中,有必要仅仅允许通过方法来对数 据进行操作,维护封装. hapterhapter5 5 面向对象基础面向对象基础 Lu Qiang, 2009 Hefei University of Technology , School of Computer and Information PagePage 2929 / 4/ 42 2 保护访问控制符protected 用protected修饰的类成员不但对于同一个包中同一个包中 的其他类的其他类是可见的,而且对于其他包中该类的子类其他包中该类的子类 也是可见的也是可见的。 Protected 仅用于继承情况仅用于继承情况中。 比较项较项 目privat e 默认认 protec ted publi c 同一类中可见是是是是 同一个包中对子类可见否是是是 同一个包中对非子类可见否是是是 不同包中对子类可见否否是是 不同包中对非子类可见否否否是 hapterhapter5 5 面向对象基础面向对象基础 Lu Qiang, 2009 Hefei University of Technology , School of Computer and Information PagePage 3030 / 4/ 42 2 目目 录录 面向对象概念面向对象概念1 访问控制符访问控制符3 2类和对象类和对象 内部类内部类5 static String sex; static String school=“合肥工业大学“; public class ch05_06_Student public static void main(String args) Student me=new Student(); Student you=new Student(); =“李明 “; me.sex=“男 “; =“张敏 “; you.sex=“女“; /对类成员变量赋值 Student.school=“安徽大学“; System.out.println(+“ “+me.sex+“ “+me.school); System.out.println(+“ “+you.sex+“ “+you.school); hapterhapter5 5 面向对象基础面向对象基础 Lu Qiang, 2009 Hefei University of Technology , School of Computer and Information PagePage 3333 / 4/ 42 2 Code - final成员变量 /定义类及其方法,引用此方法时 /通过final实参对类进行初始化操作 class Calculate private double r; final double PI=3.14159; void area(double r) double x; x=PI*r*r; System.out.println(“Area=“ + x); public class ch05_07_Calculate public static void main(String args) Calculate dd = new Calculate(); dd.area(12.3); hapterhapter5 5 面向对象基础面向对象基础 Lu Qiang, 2009 Hefei University of Technology , School of Computer and Information PagePage 3434 / 4/ 42 2 Code - static方法 static修饰的方法称为静态方法或成为类方法, 属于整个类,在任何地方都可以使用, 而不必对类进行实例化操作 /如何引用类方法 /注意本程序需要从命令行输入两个整型参数 public class ch05_08_Sta_method int width, height; public static double area(int width,int height) return width*height; public static void main(String args) int i,j; double f; i=Integer.parseInt(args0); j=Integer.parseInt(args1); f= ch05_08_Sta_method.area(i,j); System.out.println(“Area= “+i+“*“+j+“ = “+f); hapterhapter5 5 面向对象基础面向对象基础 Lu Qiang, 2009 Hefei University of Technology , School of Computer and Information PagePage 3535 / 4/ 42 2 Code - final方法 使用final修饰的方法被称为最终方法,不能被更改, 也不能被当前类的子类重载 / 定义Final类及其最终方法并引用此方法 / 注意本程序需要从命令行输入两个整型参数 public class ch05_09_Fin_method int width,height; public static final double area(int width,int height) return width*height; public static void main(String args) int i,j; double f; i=Integer.parseInt(args0); j=Integer.parseInt(args1); f=ch05_09_Fin_method.area(i,j); System.out.println(“ Area= “+f ); hapterhapter5 5 面向对象基础面向对象基础 Lu Qiang, 2009 Hefei University of Technology , School of Computer and Information PagePage 3636 / 4/ 42 2 目目 录录 面向对象概念面向对象概念1 访问控制符访问控制符3 2类和对象类和对象 内部类内部类5 static & finalstatic & final4 hapterhapter5 5 面向对象基础面向对象基础 Lu Qiang, 2009 Hefei University of Technology , School of Computer and Information PagePage 3737 / 4/ 42 2 内部类 在一个类里面定义的类 Java支持在一个类中声明另一个类,这样的类称作 内部类,而包含内部类的类成为内部类的外嵌类. 内部类的类体中不可以声明类变量和类方法。外嵌 类的类体中可以用内部类声明对象,作为外嵌类的成员. 特点 将相关的类逻辑上组织在一起. 作为包含它的类的一个成员,可以访问包含类的变 量和方法. Inner类的名字只能使用在定义它的范围内,即包含 它的类内。包含类与被包含类名字不能重. Inner类可以定义在一个方法内,它能够访问方法中 用final定义的局部变量. hapterhapter5 5 面向对象基础面向对象基础 Lu Qiang, 2009 Hefei University of Technology , School of Computer and Information PagePage 3838 / 4/ 42 2 内部类 内部类可以被定义为private或protected类型。当一个类中嵌 套另一个类时,访问保护并不妨碍内部类使用外部类的成员 被定义为static型的内部类将自动转化为顶层类,它们不能再 使用局部范围中或其他内部类中的数据和变量 内部类不能定义static型成员,而只有顶层类才能定义static 型成员。如果内部类需

温馨提示

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

评论

0/150

提交评论