JavaSE第二讲Java面向对象基础.ppt
Java SE,第二讲,Java面向对象基础,一切都是对象,Java是基于C+,但是相比之下,Java是一种更“纯粹”的面向对象的程序设计语言。Java中的对象是通过统一的对象标识符来操纵,这个标识符实际上就是对象的一个“引用”(reference)。创建对象的引用的方法:String s;使用对象之前必须要创建类的实例:Integer i=new Integer(10);,Primitive Type(基本数据类型),Java中的特殊数据类型,不使用new创建。使用new创建一个很小的、简单的对象,往往不是很有效的。由于这些基本数据类型在程序中是频繁使用的,所以Java采取与C和C+相同的方法,不用new来创建基本类型的变量,而是直接创建一个变量,这个变量拥有值,因此更加高效。基本数据类型如右图:,Primitive Type(基本数据类型),每种基本类型所占的存储空间的大小是不变的,不随机器的硬件架构的变化而变化,这也是Java具有可移植的原因之一。特例:String也可以作为基本类型来对待,String s=“abc”;,Java永远不需要销毁对象,对象引用的生命期在作用域的终点就结束了,因此对象无法被访问到了,这时对象所占的内存空间就成为内存中的“垃圾”。但是Java中根本不必担心内存回收的问题,内存垃圾的回收是由JVM自动完成的,从而避免了程序员因忘记释放对象的内存而产生的“内存泄漏”的问题。Garbage Collector:简称GC,用于回收内存中的垃圾,Java中对象都是在堆上创建的。堆是在JVM启动的时候分配的,它的空间由GC控制。,面向对象编程的基本概念,类类是描述一组相似对象共有特征的抽象。类中含有属性和方法对象根据一个类生成的所谓“实例”对象的生成类名 对象名=new 类名();,面向对象编程的基本概念,访问对象的属性对象名.属性名访问对象的方法对象名.方法名(实际参数值),类的基本结构,符合Java语言规范的类的基本结构class 类名 属性的定义;构造方法定义;行为定义;/被定义为一些普通方法,Demo:Car.java,UseCar.java,定义类的规范化(一),强制性要求不能用public关键字同时修饰两个以上的类public关键字只能修饰跟源文件名相同的类在Java语言规范中,所有的关键字每一个字母都是小写的程序入口方法的格式:public static void main(String args)/your code,定义类的规范化(二),推荐性要求每个Java源文件只定义一个类,不要把多个类同时定义在一个Java源文件中如有必要可考虑给每个类都定义一个测试用的程序入口方法类名字的每个单词的首字母应该大写,同时尽量取有意义的类名字变量名字的第一个单词的首字母应该小写,从第二个单词以后的首字母都大写,要取有意义的变量名字编译时常量名字每个单词的字母都大写,并且每个单词之间用下划线隔开 static final CHANG_LIANG方法名字的第一个单词的首字母应该小写,从第二个单词以后的首字母都大写,要取有意义的方法名字,Constructor(构造方法、构造函数、构造器),目的构造类的实例,让实例处于我们所要求的状态,Constructor,要注意以下几点必须跟定义的类同名不能有返回值,就算是viod也不行正常情况通过new关键字来调用在同一个类中可以定义多个构造方法同一个类中定义的构造方法之间可以通过this关键字来互相调用,同时必须放在第一行代码来调用当我们没有给类定义构造方法的时候,编译器会提供一个不带参数的构造方法如果我们在类定义了构造方法,那么编译器就不会再提供默认的构造方法了,Overloading(方法重载),概念在同一个类中,如果多个方法的方法名相同,我们就称这些方法互相重载了。如何来重载方法不能用方法的返回类型不同来重载方法。可以根据方法的参数个数不同来重载方法。当方法的参数个数相同的情况下,我们可以根据参数类型不同来重载方法。当方法的参数个数,参数的类型都相同的情况下,我们通过参数的顺序不同来重载方法。,Demo:Tree.java,Overloading(方法重载),重载方法的应用场合重载普通方法没有任何意义需要定义多个构造方法的时候,就得用到重载构造方法,this关键字,概念代表当前对象的引用应用场合常用来区分局部变量和实例变量当我们需要取得当前对象的引用时,常常会用this关键字来代表,this关键字使用示例,方法中调用this在方法的内部获得对当前对象的引用(reference)。这个引用是由编译器传入:this。如果在方法内部调用同一个类的方法,就不必使用this,直接调用即可。static方法中不能调用this。,Demo:Person.java,this关键字使用示例,构造方法中调用this尽管你可以用this 调用一个构造方法,但你却不能用相同的方法调用两个构造方法。此外,你必须将构造方法调用置于最起始处,否则编译器会报错。除构造函数之外,编译器禁止你在其他任何方法中调用构造函数。,Demo:Flower.java,变量初始化,类的变量初始化初始化的顺序static变量(只在class 加载时初始化一次)成员变量(实例变量)构造方法缓式初始化(方法调用时,方法内的变量初始化),Demo:OrderOfInitial.java,Demo:InitialValues.java,数组,数组:相同类型的、用一个标识符名称封装到一起的一个对象序列或基本类型数据序列。数组是通过方括号索引操作符 来定义和使用的。要定义一个数组,只需在类型名后加上一对空方括号即可。类型相同,长度固定。基本数据类型数组初始化int a1=1,2,3,4,5;对象数组初始化ArrayIndexOutOfBoundsException,Demo:Arrays.java,ArrayInit.java,Thank You!Q&A Time,