《java教程第4章.ppt》由会员分享,可在线阅读,更多相关《java教程第4章.ppt(33页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第第4章章 类和对象类和对象理解面向对象编程能够熟练创建自己的类使用属性描述对象,定义对象的行为构造方法对象的创建与使用会用关键字this、static、final包的定义和使用封装及类成员访问权限控制讨论带可变参数个数的方法4.1 理解面向对象编程理解面向对象编程面向对象技术,正是利用对现实世界中对象的抽象和对象之间相互关联和相互作用的描述来对现实世界进行模拟,并且使其映射到目标系统中。所以面向对象的特点主要概括为封装性、继承性和多态性。1.封装性:是指对象的使用者通过预先定义的接口关联到某一对象的服务和数据 时,无需知道这些服务是如何实现的。即用户使用对象时无需知道对象内部的运行细节。这样
2、,以前所开发的系统中已使用的对象能够在新系统中重新采用,减少了新系统中分析、设计和编程的工作量。2.继承性:新的对象类由继承原有对象类的某些特性或全部特性而产生出来,原有对象类称为基类(或超类、父类),新的对象类称为派生类(或子类),派生类可以直接继承基类的共性,又允许派生类发展自己的个性。继承性简化了对新的对象类的设计。3.多态性:是指不同类型的对象可以对相同的激励做出适当的不同相应的能力。多态性丰富了对象的内容,扩大了对象的适应性。4.1.1 类和对象的概念类和对象的概念类对象抽象实例化属性或状态操作或行为数据或变量方法封装的实体=数据+方法类是创建对象的模版或蓝图,它可分为:系统已经存在
3、的类(使用)、用户自定义的类(创建);类可以定义为数据和方法的集合。每个对象都有自己特定的属性和行为;类将有共同属性和行为的对象抽象出数据模版,用类的成员变量模拟对象的属性,用成员方法模拟对象的行为;4.2 类的声明类的声明面向对象开发的两大步骤:1、分析组成问题的数据,进而抽象出数据模版从具体到抽象的过程;2、由抽象出来的类生产对象,运用对象间的消息传递解决问题从抽象到具体的过程。例:定义一个名为例:定义一个名为Person的类的类class Person public int age;/成员变量public String name;public Person()/构造方法public vo
4、id say()/成员方法public void eat()public static void main(String args)/主方法类修饰符列表类修饰符列表修饰符 class 类名 extends 超类名 implements 接口列表 类体;类名的规范:描述类的用途;首字母大写;多个单词连写,且每个单词首字母大写。类体主要包含四部分内容:成员变量、构造方法、成员方法、主方法。类修饰符功能default(无)同包访问public完全开放abstract抽象final没有子类4.2.1 成员变量的声明成员变量的声明修饰符 变量类型 变量名=值所有成员变量,如果不附初值,都有默认初值。成员
5、变量修饰符功能private限制类外访问default(无)同包访问protected同包及子类访问public完全开放static静态final常量volatile可被多个线程访问transient不序列化4.2.2 构造方法的声明构造方法的声明构造方法的定义:1、一般为public;2、没有返回类型,不写void;3、与类名同名;4、不能直接调用,由new调用,创建对象;5、主要任务:成员变量的初始化。public 类名()方法体;public Person()age=12;name=“zhangsan”;如果一个类没有构造方法,系统会自动创建一个无参的构造方法。4.2.3 成员方法的声明
6、成员方法的声明修饰符 返回值类型 方法名(参数列表)throws 异常类型列表 方法体;成员方法命名规范与成员变量同方法修饰符功能private私有的default默认权限protected受保护的public公共的static静态final不能覆盖native本地方法abstract抽象synchronized同步方法public void say()System.out.println(“我是”+name+“,今年”+age+“岁”);4.2.4 主方法的声明主方法的声明程序从主方法开始运行;程序从主方法开始运行;主方法的声明只能是:主方法的声明只能是:public static void
7、 main(String args);大部分类是没有主方法的;大部分类是没有主方法的;没有主方法的类不能运行。没有主方法的类不能运行。4.3 对象的使用对象的使用4.3.1 对象的创建创建对象时,实际是调用、执行了类的构造方法,初始化成员变量;如:Person p=new Person();Java对象的创建,必须使用关键字new;p是类类型的变量,此处为Person类型;如果没有为类定义构造方法,且创建对象时使用无参构造方法,不会出错;对象名(即类变量)存放在栈中;对象的属性存放在堆中。4.3.2 通过对象访问成员通过对象访问成员访问对象的成员,用”.”操作符:public static v
8、oid main(String args)Person p=new Person();String n=p.name;p.say();System.out.println(p.age);4.3.3 给对象引用变量赋值给对象引用变量赋值Person p1=new Person(12,“zhangsan”);Person p2=new Person(20,“lisi”);p1=p2;System.out.println(“p1赋值后:”+p1.age);p1.age=30;System.out.println(“p1修改后:”+p1.age);System.out.println(“p1修改后:”
9、+p2.age);4.3.4 对象的清除对象的清除在Java中,对无用内存空间的释放由系统自动完成,我们称之为:垃圾回收机制(Garbage Collection);当某对象的引用计数器为0时,则该对象占用的内存空间将被回收。一下几种情况对象会变成垃圾:1、Person p=new Person();p=null;2、new Person()(匿名对象);3、for(int i=0;i10)&methodB(1);b=(i10)&methodB(2);public static void main(String args)new Test().methodA(0);System.out.pri
10、ntln(j);求该程序的输出。4.7 final关键字关键字修饰变量:该变量成为常量,在声明的同时赋初值,一般用final声明的变量都同时声明为static;修饰方法:最终方法,不可以被子类中的方法覆盖;修饰类:最终类,不可以被继承。4.8 包包包的概念:包是一组类的集合;包的作用:简单说,其作用就像Windows中的文件夹,管理唯一的名字,但用法不全是。Java类库中常用的包包名包名用途用途java.langLanguage语言包语言包java.awt抽象窗体工具包抽象窗体工具包java.awt.event事件包事件包javax.swing跨平台轻量级组件包跨平台轻量级组件包java.sq
11、l数据库访问包数据库访问包java.io输入输入/输出流包输出流包网络包网络包java.util实用工具包实用工具包4.8.1 包的声明包的声明package com.xiwang.class8.lesson9;包的声明必须放在java中除注释以外的第一句;带包编译格式:javac d 存放路径 文件名(.表示当前路径)带包编译后的类,运行时必须带上包名:java 包名.类名打包自动创建的目录不能理解为普通的系统目录,它是类名的一部分。类名为:包名.类名在其他包中用打包的类时,必须导入该类所在的包,或使用其全名。4.8.2 使用包使用包使用import导入包中所有的类:import com.x
12、iwang.class8.lesson9.*使用import导入包中的某一个类:import com.xiwang.class8.lesson9.Person导入包的语句必须放在类或接口的声明前,包的声明后;导入包时只能导入该包中的类,不能导入其子包;对于不在当前文件夹下的包,可以转到其所在位置运行,或设置classpath来运行:set classpath=f:;%classpath%命令行参数设置的classpath在命令提示符关闭后就不起作用了,要使它始终有用应该使用第一章讲的方法设置。4.9 封装与类成员访问权限封装与类成员访问权限封装,简单的说就是信息隐蔽,把数据和行为结合在一个类中
13、,并对对象的调用者隐蔽数据的实现过程;封装的实现:成员变量私有化,为访问者提供公有的方法。能达到最好的封装效果的修饰符是:private修饰符本类本包中其它类子类其它包中的类privatedefaultprotectedpublic例:封装例:封装class Person private int age;private String name;public void setAge(int age)this.age=age;public int getAge()return age;例:封装后对象及成员的其访问例:封装后对象及成员的其访问public class Test public static void main(String args)Person p=new Person(30,“lisi”);p.setAge(5);int age=p.getAge();4.10 可变个数参数的方法可变个数参数的方法5.0版本增加,很少用;系统输出方法:printf(String format,Object args);一个方法最多只能有一个这样的参数,且只能放在最后;实际是数组。