Java语言程序设计-类与对象 (2).ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《Java语言程序设计-类与对象 (2).ppt》由会员分享,可在线阅读,更多相关《Java语言程序设计-类与对象 (2).ppt(75页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Java语言程序设计-类与对象,教师:段鹏飞,为什么要用正则表达式,我们在电脑中搜索一个文件,一般搜索文件名:java.ppt如果要查找所有的ppt呢? *.ppt,关于正则表达式,条条大道通罗马正则测试网址,正则表达式基础知识,我们先从简单的开始。假设你要搜索一个包含字符“cat”的字符串,搜索用的正则表达式就是“cat”。如果搜索对大小写不敏感,单词“catalog”、“Catherine”、“sophisticated”都可以匹配。也就是说:,1.1 句点符号,假设你在玩英文拼字游戏,想要找出三个字母的单词,而且这些单词必须以“t”字母开头,以“n”字母结束。 可以使用一个通配符句点符号
2、“.”。这样,完整的表达式就是“t.n”,它匹配“tan”、“ten”、“tin”和“ton”,还匹配“t#n”、“tpn”甚至“t n”。,1.2 方括号符号,“.” 搜索的内容太多了,可以在方括号 “” 里面指定看来有意义的字符。只有方括号里面指定的字符才参与匹配。也就是说,正则表达式“taeion”只匹配“tan”、“Ten”、“tin”和“ton”。但“toon”不匹配,因为在方括号之内你只能匹配单个字符:,1.3 “或”符号,如果想要匹配“toon”,那么,你可以使用“|”操作符。 “|”操作符的基本意义就是“或”运算。要匹配“toon” ,使用“t(a|e|i|o|oo)n”正则表
3、达式。这里不能使用方扩号,因为方括号只允许匹配单个字符;这里必须使用圆括号“()”。,1.4 表示匹配次数的符号,如何用“”来表示“toon”to+n,1.4 表示匹配次数的符号,假设我们要在文本文件中搜索美国的社会安全号码。这个号码的格式是999-99-9999,如何表示? (“-”)有着特殊的意义,它表示一个范围,比如从0到9,1.5 “否”符号,“”符号称为“否”符号。如果用在方括号内, “”表示不想要匹配的字符。例如,图四的正则表达式匹配所有单词,但以“X”字母开头的单词除外。,1.6 其它符号,A-Za-z0-9,A-Za-z0-9,示例,非负整数:1-9d*|0正整数:1-9d*英
4、文字符串:A-Za-z+Email地址: w1,w1,.w1,程序,String regex=w1,w1,.w1, ; String str1=; String str2=; if(str1.matches(regex) System.out.println(str1+是一个Email地址); else System.out.println(str1+不是一个Email地址); if(str2.matches(regex) System.out.println(str2+是一个Email地址); else System.out.println(str2+不是一个Email地址); ,关于程序中
5、中文的问题,知识点,1、关于static的使用方法2、类的初始化2、Java类继承的特点3、封装、继承和多态的使用方法4、继承的访问权限(private)5、接口的定义及使用,制造对象与使用对象,示例Scanner in = new Scanner(System.in);double a = Double.parseDouble(in.next();double a = in.nextDouble();System.out.println()?,16,17,static (静态变量/静态方法)类的变量/方法,独立于类的对象,可以直接根据类名调用class S static int A = 12
6、, B = 34;static void print() class Test public static void main(String args) System.out.println(“A=“ + S.A + “ B=“ + S.B);S.print();,static,static方法中仅仅可以调用其他static方法,类的静态成员,main方法就是static静态成员变量可以进行数据的共享静态方法装载至内存的时间:JVM在加载.class文件时通过类名+点运算符调用只能调用静态方法和静态属性,18,Math类,提供了常用的数学函数示例Math.abs(123.45);Math.ce
7、il(123.45);/向上取整数Math.floor(123.45);/向下取整数Math.max(-1.5, 1.5);Math.random(); /随机行为,19,对象变量的赋值,基本数据类型的赋值对象变量之间的赋值两个变量指向同一个对象赋值运算符左侧的变量原先指向的空间可能被回收,20,小测试:下面两段代码的输出?,代码一代码二,21,调用对象的方法,方法调用(method-calling)在Java中,对象通过调用其他对象的方法来进行互相之间的“通信”。返回值(return value)返回值是方法调用的结果方法可以通过返回值来返回对象的信息。当一个方法不需要返回值的时候,使用vo
8、id表示不需要返回值。Eg:main方法方法的参数参数的数量、类型、顺序的正确基本数据类型参数是“值传递”对象类型参数是“址传递”,被调用方法会改变原对象,22,对象的初始化,定义时初始化private int value=10;private String name = James Goslin;private String array = new String10;,23,初始化时属性的缺省值,所有的数值类型整型,0浮点型,0.0字符类型Unicode编码为0的不可见字符逻辑类型false对象类型null,24,定义初始化,一个直接的做法是在定义数据成员的同时也为其赋值。 class Me
9、asurement boolean b=true; char c=x; int i=47; ; 也可以用相同的方法初始化对象。 class Measurement Depth o = new Depth(); ;,可以调用一个方法进行初始化,class CInit int i = f(); / . 当然这个方法也可以使用参数class CInit int i = f(); int k = g(i); / . ; 但是那些参数不能是尚未初始化的其它数据成员。class CInitWrong int j = g(i); int i = f(); / . ;,对象的初始化(续),构造方法,一种特殊的
10、方法方法名称就是类的名称没有返回类型自动被调用不能通过点运算符调用缺省构造方法无参数的构造方法Java编译器自动配置,满足编译需要自定义构造方法有参数的构造方法传递适当参数值进行调用,27,方法重载,多个方法的名称相同,但是参数表不同方法的签名参数的个数参数的顺序参数的类型不包括返回类型,28,方法重载(续),构造方法的重载普通方法的重载this关键字特殊的对象变量this.name=Lim;常用于IDE自动生成的构造方法和set方法,29,访问控制,封装的定义隐藏数据开放操作Java修饰符publicprotected无修饰符private,30,访问控制(续1),类成员(属性和方法)的可见
11、性属性是private访问操作是publicgetXXX()setXXX()普通方法不限制,31,访问控制(续2),类的可见性,32,目录,1、封装2、继承3、多态4、接口,计算器,命名不规范,不能用“=”,用if效率低,计算器,曹操的故事,曹操的故事,活字印刷优点,要改,只需要改要改之字,此为可维护;这些字并非用完这次就无用,完全可以在后来的印刷中重复使用,此为可复用;此诗若要加字,只需另刻字加入即可,此为可扩展;排版可能是竖排或横排,只需将活字移动就可以做到,此为灵活性好。,复制VS重用,业务封装,紧耦合 VS 松耦合,类的调用,面向对象特性,Java语言中有三个典型的面向对象的特性:封装
12、性、继承性和多态性 。,下面代码有什么问题? 如何解决上面设计的缺陷?,Student stu = new Student();stu.java = 200;,不合理的赋值,使用封装,为什么要使用封装,1、什么是封装?,面向对象三大特征之一封装封装的概念封装的好处,封装:将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问,隐藏类的实现细节,只能通过规定方法访问数据,方便加入控制语句,方便修改实现,46,封装性对象本身的数据得到保护/隐藏其他对象仅仅需要知道对该对象的访问方法(接口/interface)即可好处模块化-每个对象的源文件可以是相互
13、独立的,可以被不同的程序调用,每个对象是一块积木,可以搭建不同的形状信息隐藏-通常定义一个公共接口/方法实现对对象的访问,可以调整对象的私有信息和方法,而不会对其他调用它的对象产生影响可重用性黑盒子电脑的DIY喷墨打印机,硒鼓坏/彩色硒鼓,1、为什么要使用封装?,封装的步骤,修改属性的可见性,创建getter/setter方法,在getter/setter方法中加入属性控制语句,1、如何使用封装,设为private,用于属性的读写,对属性值的合法性进行判断,class Student private float java = 0; private float database=0; priva
14、te float html=0; public float getJava() return java; public void setJava (int java) if (java 100 | java 0) this.java = 60; System.out.println(“Java成绩在0和100之间,默认值是60); else this.java = java; / 其它getter/setter方法,this代表当前对象,1,2,2,3,1、如何使用封装,49,继承性为什么会有继承?建立一个类后,发现另一个新的类有相同的特性,两个选择:重新定义一个新的类;在已有类的基础上,修改
15、(加加/减减)父类和子类,子类继承(拥有)父类所有的数据和方法,同时子类可以有新的数据和方法,“青出于蓝,而胜于蓝”树型结构(层次化结构) 根(基类),2、继承,运输工具,航空运输工具,陆地运输工具,水上运输工具,人力驱动,引擎驱动,二轮,四轮,客运,货运,2、继承,问题:一个类能否继承两个或多个父类?,51,2、类的继承,父类与子类的关系 (extends)基本内容子类可调用父类的方法和变量,子类可增加父类中没有的方法和变量子类可重新定义父类的静态/实例变量子类可重新定义父类的静态/实例方法继承中的构造方法类成员访问修饰符与继承的关系,52,类的继承,子类可调用父类的方法和变量子类可增加父类
16、中没有的方法和变量,class Vehicle String brand;void setB(String s) brand = s; void showB() System.out.println(brand); ,class Bus extends Vehicle int line;void setL(int l) line = l; void showL() System.out.println(line); ,Bus b = new Bus();b.setB(“audi”); /*b.setL(710);b.showB(); /*b.showL();,子类继承父类的方法和变量,则这些方
17、法和变量就属于子类,则子类对象对这些方法和变量的调用是显而易见的,53,类的继承,子类可重新定义父类中已有的变量父类中同名的变量无效(隐藏)通过“super.变量名” 和父类名.变量名(static变量)引用,class A int i=256, j =64;static int k = 32;final float e = 2.718f;,class B extends A public char j=x;final double k =5;static int e =321;void show() System.out.println(i + “ “ + j + “ “ + k + “ “
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 语言程序设计 对象
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内