L4L5类与面向对象part4

上传人:c****d 文档编号:243023407 上传时间:2024-09-14 格式:PPT 页数:38 大小:131.50KB
返回 下载 相关 举报
L4L5类与面向对象part4_第1页
第1页 / 共38页
L4L5类与面向对象part4_第2页
第2页 / 共38页
L4L5类与面向对象part4_第3页
第3页 / 共38页
点击查看更多>>
资源描述
单击鼠标编辑标题文的格式,单击鼠标编辑大纲正文格式,第二个大纲级,第三个大纲级,第四个大纲级,第五个大纲级,第六个大纲级,第七个大纲级,第八个大纲级,第九个大纲级,*,java Basic,L4-classes & objects part2,java Basic,1,课程目标,了解,java,语言基本概念,掌握,java,基本语法要素,掌握,java,类和对象的使用,掌握,java,中数组的使用,掌握,java,日期和字符串类的使用,掌握,jdbc,基本使用,熟悉,awt/swing,界面元素及布局,熟悉事件处理机制,2,本章目标,掌握,Object,类的基本概念,熟悉内部类的使用,了解匿名对象的使用,掌握方法的运用技巧,掌握关键字,this,、,static,、,final,、,instanceof,的作用与使用技巧,3,Object,类,在,Java,中,一切类都是继承关系。,如果一个类没有指明继承关系,则默认继承,Object,类,对于一个完整的类来将,应该覆写,Object,类的以下方法:,toString();,对象打印时调用,equals();,对象比较时调用,hashCode();,4,Object类使用,toString(),方法:,class Person extends Object,String name = ,张三,;,int age = 25 ;,/,覆写,Object,类中的,toString(),方法,public String toString(),return ,我是:,+this.name+,,今年:,+this.age+,岁,;,class TestToStringDemo2,public static void main(String args),Person p = new Person() ;,System.out.println(p);,5,Object,类使用,equals(),方法:,此方法用于比较对象是否相等。,Object,中,equals(),方法比较的是对象的地址,而,String,类中,覆写了,equals(),方法,比较的对象的内容。所以在开发中往往需要将,equals(),方法进行覆写。,范例:,TestOverEquals1.java,TestOverEquals2.java,6,=,操作符与,equals,方法,=,操作符与,equals,方法的区别:,引用类型比较引用;基本类型比较值;,equals(),方法只能比较引用类型,,=,可以比较引用类型及基本类型;,特例:,当用,equals(),方法进行比较时,对类,File,、,String,、,Date,及封装类(,Wrapper Class,)来说,是比较类型及内容而不考虑引用的是否是同一个实例;,用,=,进行比较时,符号两边的数据类型必须一致,(,可自动转换的基本数据类型除外,),,否则编译出错;,7,=,操作符与,equals,方法举例,class TestEquals ,/,请自行定义能满足需要的,MyDate,类,public static void main(String args) ,MyDate m1 = new MyDate(24, 3, 2001);,MyDate m2 = new MyDate(24, 3, 2001);,if ( m1 = m2 ) ,System.out.println(m1=m2);, else ,System.out.println(m1!=m2);,if ( m1.equals(m2) ) ,System.out.println(m1 is equal to m2);, else ,System.out.println(m1 is not equal to m2);,m2 = m1;,if ( m1 = m2 ) ,System.out.println(m1=m2);, else ,System.out.println(m1!=m2);,8,9,内部类,在,Java,中,允许一个类的定义位于另一个类的内部,前者称为内部类,内部类和外层封装它的类之间存在逻辑上的所属关系,Inner class,一般用在定义它的类或语句块之内,在外部引用它时必须给出完整的名称。,Inner class,的名字不能与包含它的类名相同;,Inner class,可以使用包含它的类的静态和实例成员变量,也可以使用它所在方法的局部变量;,9,10,内部类举例,(1),class A ,private int s;,public class B,public void mb() ,s = 100;,System.out.println(,在内部类,B,中,s= + s);,public void ma() ,B i = new B();,i.mb();,public class Test ,public static void main(String args),A o = new A();,o.ma();,10,11,内部类演示,(1),main,栈内存,o,0,A,类对象,public class A ,private int s;,public class B,public void mb() ,s = 100;,/ The inn,System.out.println(s);,public void ma() ,B i = new B();,i.mb();,public class Test ,public static void main(String a),A o = new A();,o.ma();,s,堆内存,处内存状态,11,12,内部类演示,(2),main,栈内存,o,B,类对象,0,A,类对象,public class A ,private int s;,public class B,public void mb() ,s = 100;,/ The inn,System.out.println(s);,public void ma() ,B i = new B();,i.mb();,public calss Test ,public static void main(String a),A o = new A();,o.ma();,s,ma,this,i,A.this,堆内存,处内存状态,12,13,内部类演示,(3),main,栈内存,o,B,类对象,0,A,类对象,public class A ,private int s;,public class B,public void mb() ,s = 100;,/ The inn,System.out.println(s);,public void ma() ,B i = new B();,i.mb();,public calss Test ,public static void main(String a),A o = new A();,o.ma();,s,ma,this,i,mb,this,A.this,堆内存,处内存状态,13,14,内部类举例,(2),public class A ,private int s;,public class B ,public void mb() ,System.out.println(s);,public class Test ,public static void main(String args) ,A a = new A();,/,创建一个依赖于,a,而存在的,b,A.B b =,a.new B,();,b.mb();,栈内存,a,B,类对象,0,A,类对象,s,b,this,堆内存,处内存状态,main,mb,A.this,14,15,内部类举例,(3),public class A,private int s = 111;,public class B ,private int s = 222;,public void mb(int s) ,System.out.println(s); /,局部变量,s,System.out.println(this.s); /,内部类对象的属性,s,System.out.println(Outer3.this.s); /,外层类对象属性,s,public static void main(String args),A a = new A();,A.B b = a.new B();,b.mb(333);,15,16,内部类特性,Inner class,可以声明为抽象类 ,因此可以被其它的内部类继承。也可以声明为,final,的。,和外层类不同,,Inner class,可以声明为,private,或,protected,;,Inner class,可以声明为,static,的,但此时就不能再使用外层封装类的非,static,的成员变量;,非,static,的内部类中的成员不能声明为,static,的,只有在顶层类或,static,的内部类中才可声明,static,成员;,16,匿名内部类,内部类:在一个类的内部还定义另一个类。,匿名内部类:在抽象类与接口的基础上发展起来的。,17,再谈方法,方法的概念,方法的声明格式:,public static,返回值类型 方法名称,(,参数列表,),return,返回值,;,对于返回值,可以是基本数据类型,也可以是引用类型,当方法无返回值时,可用,void,声明。,方法名称的命名规则:第一个单词首字母小写,之后每个单词首字母大写。,18,方法的使用,/,以下的程序说明了方法的使用,public class TestJavamethod,public static void main(String args),double num;,num=show_length(22,19); /,输入,22,与,19,两个参数到,show_length(),里,System.out.println(,对角线长度,= +num);,public static double show_length(int m, int n),return Math.sqrt(m*m+n*n); /,返回对角线长度,19,方法的重载,概念:方法的名称相同,但是参数的类型或个数不同。,在同一个类中可以定义多个同名方法,-overload,public class PrintStream,public void println(int i) ,public void println(float f) ,public void println(String s) ,重载方法的参数列表必须不同,重载方法的返回值类型可以相同,也可以不同,20,方法的重载,/,以下程序说明了方法的重载操作,public class TestJavareload,public static void main(String args),int int_sum ;,double double_sum ;,int_sum = add(3,5) ;/,调用有两个参数的,add,方法,System.out.println(int_sum = add(3,5),的值是:,+int_sum);,int_sum = add(3,5,6) ;/,调用有三个参数的,add,方法,System.out.println(int_sum = add(3,5,6),的值是:,+int_sum);,double_sum = add(3.2,6.5); /,传入的数值为,doule,类型,System.out.println(double_sum = add(3.2,6.5),的值是:,+double_sum);,public static int add(int x,int y),return x+y ;,public static int add(int x,int y,int z),return x+y+z ;,public static double add(double x,double y),return x+y ;,21,方法与数组,/,一维数组作为参数来传递,这里的一维数组采用静态方式赋值,public class TestJavachuanshuzu,public static void main(String args),int score=7,3,8,19,6,22; /,声明一个一维数组,score,largest(score); /,将一维数组,score,传入,largest(),方法中,public static void largest(int arr),int tmp=arr0;,for(int i=0;iarr.length;i+),if(tmp,28,类属性应用举例,class Person ,private int id;,public,static,int,total,= 0;,public Person() ,total,+;,id =,total,;,public class OtherClass ,public static void main(String args) ,Person.total,= 100;,System.out.println(Person.total);,Person c = new Person();,System.out.println(Person.total);,29,类方法应用举例,public class Person ,private int id;,private static int total = 0;,public,static,int,getTotalPerson(),return total;,public Person() ,total+;,id = total;,public class TestPerson ,public static void main(String args) ,System.out.println(Number of total is ,+,Person.getTotalPerson(),);,Person p1 = new Person();,System.out.println( Number of total is ,+,Person.getTotalPerson(),);,The output is:,Number of total is 0,Number of total is 1,30,静态初始化,在类的定义体中、方法的外部可包含,static,语句块,static,语句块仅在其所属的类被载入时执行一次,static,块通常用于初始化化,static (,类,),属性,class Person ,public static int total;,static ,total = 100;/,为,total,赋初值, /,其它属性或方法声明,31,静态初始化举例,class Person ,public static int total;,static ,total = 100;,System.out.println(in static block!);,public class Test ,public static void main(String args) ,System.out.println(total = + Person.total);,System.out.println(total = + Person.total);,32,Singleton,设计模板,class Single,private static Single onlyone = new Single();,private String name;,public static Single getSingle() ,return onlyone;,private Single() ,public class TestSingle,public static void main(String args) Single s1 = Single.getSingle();,Single s2 = Single.getSingle();,if (s1=s2),System.out.println(s1 is equals to s2!);,33,主方法,main(),主方法声明格式:,public,static,void main(String args),public:,表示最大权限,所有都可以访问,static:,表示可以由类名称直接调用,void:,主方法是一切的起点,所有表示无返回,main,:系统内建的方法名称。,String args:,表示字符串数组,用于接收,系统启动,参数,34,主方法,main(),public class TestMain,/*,public,:表示公共方法,static,:表示此方法为一静态方法,可以由类名直接调用,void,:表示此方法无返回值,main,:系统定义的方法名称,String args,:接收运行时参数,*,/,public static void main(String args),/,取得输入参数的长度,int j = args.length ;,if(j!=2),System.out.println(,输入参数个数有错误!,) ;,/,退出程序,System.exit(1) ;,for (int i=0;iargs.length ;i+ ),System.out.println(argsi) ;,35,关键字,final,在,Java,中声明类、属性和方法时,可使用关键字,final,来修饰。,final,标记的类不能被继承。,final,标记的方法不能被子类重写。,final,标记的变量,(,成员变量或局部变量,),即成为常量,只能赋值一次。,final,标记的成员变量必须在声明的同时或在每个构造方法中显式赋值,然后才能使用。,36,关键字,final,应用举例,import java.io.*;,public final class Test,public static int totalNumber= 5 ;,public final int id;,public Test(),id = +totalNumber;,public static void main(String args) ,Test t = new Test();,System.out.println(t.id);,final int i = 10;,final int j;,j = 20;,j = 30;,/,非法,37,Ex1,使用,Static,和,final,关键字,练习,M7-8,页例子,体会,static,关键字的用法;,练习,M7-11,页例子及下述程序,并改正其错误,体会,final,关键字修饰变量时的用法;,public class TestFinal,public static void main(String args),int i = 1;,final int j = 10;,j = 100;,final int k ;,k = 100;,k = 200;,System.out.println(i= + i + j= + j + k= + k);,38,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!