![JavaSE_7_面向对象编程(二)_第1页](http://file2.renrendoc.com/fileroot_temp3/2021-11/3/24d7df32-9ea7-46a9-8a87-198edd2c4fc8/24d7df32-9ea7-46a9-8a87-198edd2c4fc81.gif)
![JavaSE_7_面向对象编程(二)_第2页](http://file2.renrendoc.com/fileroot_temp3/2021-11/3/24d7df32-9ea7-46a9-8a87-198edd2c4fc8/24d7df32-9ea7-46a9-8a87-198edd2c4fc82.gif)
![JavaSE_7_面向对象编程(二)_第3页](http://file2.renrendoc.com/fileroot_temp3/2021-11/3/24d7df32-9ea7-46a9-8a87-198edd2c4fc8/24d7df32-9ea7-46a9-8a87-198edd2c4fc83.gif)
![JavaSE_7_面向对象编程(二)_第4页](http://file2.renrendoc.com/fileroot_temp3/2021-11/3/24d7df32-9ea7-46a9-8a87-198edd2c4fc8/24d7df32-9ea7-46a9-8a87-198edd2c4fc84.gif)
![JavaSE_7_面向对象编程(二)_第5页](http://file2.renrendoc.com/fileroot_temp3/2021-11/3/24d7df32-9ea7-46a9-8a87-198edd2c4fc8/24d7df32-9ea7-46a9-8a87-198edd2c4fc85.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、源自清华 值得信赖中国移动互联网研发培训专家千锋教学部JAVAJAVA的面向对象(二)的面向对象(二)源自清华 值得信赖中国移动互联网研发培训专家目标目标this关键字方法的参数传递static关键字包的创建和导入源自清华 值得信赖中国移动互联网研发培训专家Java中为解决变量的命名冲突和不确定性问题,引入关键字“this”代表其所在方法的当前对象。 在构造方法中指该方法所创建的新对象 在非static的普通方法中指调用该方法的对象 在IDE工具中用this.来让系统提示本类中的属性和实例方法.源自清华 值得信赖中国移动互联网研发培训专家public class ThisSamplepriva
2、te int year;private int month;private int day;public ThisSample(int year,int month,int day) this.year = year; this.month = month; /this.day = day;/*this.*/setDay(day);public void setYear(int year) this.year = year; public void setMonth(int m) month = m; public void setDay(int d) day = d; public void
3、 setting() this.setYear(2001);/在方法里面调用其他方法(不是在方法声明中声明其他方法) this.setMonth(9); setDay(11); /等价于this.setDay(11); 源自清华 值得信赖中国移动互联网研发培训专家运行程序并分析流程,体会this的用法。 public class TestMyDate public static void main(String args) MyDate m1 = new MyDate(22, 7, 1964); m1.display(); /类MyDate的定义见第22页源自清华 值得信赖中国移动互联网研发培
4、训专家v如果某个构造方法的第一条语句是this(.),那么这个构造方法将调用本类中的重载的其他构造方法。用于复用其他构造方法中的初始化代码(DRY原则)public class Employee private String name; /姓名 private int age; /年龄 private double salary; /薪水 public Employee(String name, int age, double salary) /构造方法1 = name; this.age = age; this.salary = salary; public Employ
5、ee() /构造方法2 this(无名, 18, 800.0); /调用到了构造方法1 this调用重载的构造方法源自清华 值得信赖中国移动互联网研发培训专家举例基本类型数据传递的是该数据的值本身(变量的副本)。引用类型数据传递的是这个对象的引用(的副本),而非对象本身。源自清华 值得信赖中国移动互联网研发培训专家public class PassValue public static void main(String args) PassValue pv = new PassValue(); int x = 5; System.out.println(“方法调用之前x=” + x); pv.
6、change(x); System.out.println(“方法调用之后x=” + x); public void change(int y) y = 100; System.out.println(“方法中y=” + y); 5main方法中的方法中的栈内存情况栈内存情况x?change方法中方法中的栈内存情况的栈内存情况x源自清华 值得信赖中国移动互联网研发培训专家public class PassValue2 private int x ; public static void main(String args) PassValue2 obj = new PassValue2(); o
7、bj.x = 5; System.out.println(“方法调用之前obj.x=” + obj.x); obj.change(obj); System.out.println(“方法调用之后obj.x=” + obj.x); public void change(PassValue2 obj2) obj2.x = 100; System.out.println(“方法中obj2.x=” + obj2.x); 0 x3000main方法中的方法中的栈内存情况栈内存情况obj0 x3000change方法中方法中的栈内存情况的栈内存情况obj2堆内存堆内存5x源自清华 值得信赖中国移动互联网研
8、发培训专家DemoDemo返回值类型是所在类的类型,add(.).add(.).每次调用,age+.multiple(.).multiple(.),每次调用,age*.源自清华 值得信赖中国移动互联网研发培训专家应用场景: 不想创建某个类的对象,而希望直接访问该类的属性或方法在Java类中声明全局变量(类里面的属性)、普通方法(即不是构造方法)和内部类时,可使用关键字static做为修饰符。static标记的全局变量由整个类整个类(所有对象)共享,无论该类是否产生了对象,产生了多少个对象,都有且只有一份.在类加载时,类变量(也就是静态变量)会自动初始化.Demo如访问控制权限允许,可不必创建该
9、类对象而直接用类名加 .调用static属性或方法。static成员也称类成员或静态成员,如:类属性、类方法、静态方法等。源自清华 值得信赖中国移动互联网研发培训专家class Person private int id;/每个对象拥有一个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.tota
10、l); Person c = new Person(); System.out.println(Person.total); 源自清华 值得信赖中国移动互联网研发培训专家/Person.javapublic class Person private int id; private static int total ;/= 0; public static int getTotalPerson() return total; public Person() total+; id = total; /TestPerson.javapublic class TestPerson public sta
11、tic 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(); 源自清华 值得信赖中国移动互联网研发培训专家DemoDemoDog类:static int no;int id;String name定义两个重载的构造方法测试静态属性no,用对象方法获取no.源自清华 值得信赖中国移动互联网研发培训
12、专家思考思考1.构造方法可以声明成static的吗?2.构造方法可以使用static的属性吗?3.构造方法可以调用static的方法吗?4.static可以用来修饰类吗?5.static方法中可以直接访问类中的实例属性吗?6.static方法中可以直接访问类中的实例方法吗?7.static方法中可以直接访问类中的构造方法吗?源自清华 值得信赖中国移动互联网研发培训专家易错点提示易错点提示: :静态方法中只能直接调用本类中的静态成员(变量和方法)。静态方法中不能使用this和super关键字。源自清华 值得信赖中国移动互联网研发培训专家在类的定义体中、方法的外部可包含static语句块stati
13、c语句块仅在其所属的类被载入时执行一次仅声明该类的引用,不会执行staticstatic语句块通常用于初始化static属性 (类属性)class Person public static int total;static total = 100; /为total赋初值 /其它属性或方法声明 源自清华 值得信赖中国移动互联网研发培训专家class Person public static int total; static total = 100;System.out.println(in static block!); public class Test public static void
14、 main(String args) System.out.println(total = + Person.total);System.out.println(total = + Person.total);一旦用到了Person类,就会执行static源自清华 值得信赖中国移动互联网研发培训专家语句块语句块( (构造语句块构造语句块/ /空语句块空语句块) )类中定义的.语句块相当于一个无参的构造方法,在其他构造方法之前执行创建对象的时候先执行static block ,再执行block每新建一个对象,block被执行一次,相当于一个无参的构造方法,在构造方法之前执行源自清华 值得信赖中国
15、移动互联网研发培训专家DemoDemo两次创建对象,将调用一次static,两次,两次构造方法Cat2个static2个1个构造方法1个静态属性1个静态方法在场景类中创建两次该类的对象或进行静态属性/静态方法的访问,观察执行顺序源自清华 值得信赖中国移动互联网研发培训专家vwhy为了便于管理大型软件系统中数目众多的类,解决类命名冲突的问题,Java引入了包(package)的概念。 在使用许多类时,类和方法的名称很难决定。有时需要使用与其他类相同的名称。包基本上隐藏了类并避免了名称上的冲突。vwhere用package来声明包,package语句必须是java源文件中的第一条语句。(若无这条语
16、句,则默认放置在无名包下)vhow在package语句中,用.来指明包(目录)的层次。包对应着文件系统的目录层次结构。 如:package com.bjjava; 编译后对应的类文件应位于combjjava目录下。源自清华 值得信赖中国移动互联网研发培训专家package com.demo.test;public class Employee private String name; /姓名 private int age; /年龄 private double salary; /薪水 public Employee(String name, int age, double salary) /
17、构造方法 = name; this.age = age; this.salary = salary; 声明包源自清华 值得信赖中国移动互联网研发培训专家vjavac Employee.java (半自动,需要手工创建目录)v在当前目录下生成带包结构的字节码 javac d Employee.javav在指定目录下生成带包结构的字节码 javac d D:share Employee.javav运行: java 包名.类名 包名.类名 叫做类的全限定名源自清华 值得信赖中国移动互联网研发培训专家vimport语句v为使用定义在不同包中的JAVA类,需要import语句来引入所
18、需要的类。v语法格式:vimport package1.package2(classname|*);源自清华 值得信赖中国移动互联网研发培训专家v要导入某个包中的所有类可以用:包名.* 如上例:import com.qianfeng.*;v在同一包中的类可以直接引用,无需import语句。 v建议把自定义的类都放置在包中。否则如果放在默认的包中,其他包中的类无法访问到,也不能import!import com.qianfeng.Employee;public class PackageDemo public static void main(String args) Employee empl
19、oyee = new Employee( ); 导入包中的这个类源自清华 值得信赖中国移动互联网研发培训专家练习练习设计一个Singer.java打包到taiwan.male中去设计一个Dancer.java 打包到taiwan.female中去Singer和Dancer类中分别有一个name属性(自定义一些其他属性和方法)设计一个Test.java 打包到business.client中去 引入上述两个类,并创建这两个类的对象,name分别为JayChou和Jolin,进行方法调用.源自清华 值得信赖中国移动互联网研发培训专家静态导入静态导入(jdk5(jdk5开始开始) )导入某个类中的指
20、定静态属性或静态方法导入某个类中的指定静态属性或静态方法; ;importimport static java.lang.Math.PI;static java.lang.Math.PI;import static java.lang.Math.import static java.lang.Math.randomrandom; ;/不写不写() ()importimport static java.lang.Math.static java.lang.Math.* *; ;import static java.lang.System.out;import static java.lang.S
21、ystem.out;源自清华 值得信赖中国移动互联网研发培训专家vjava.lang 包含一些Java语言的核心类,如:String、Math、Integer、System和Thread,提供常用功能。 此包因为非常常用,所以在任何类中不用导入就可能直接使用。vjava.util 包含一些实用工具类,如定义系统特性、日期时间、日历、集合类等。Scanner,Random,Datevjava.io 包含能提供多种输入输出的流类。 包含执行网络相关的操作的类。vjava.sql java操作数据库的一些API。vjava.text 包含了一些用来处理文本、日期、数字和消息的类和接口。JDK中常用包的介绍:源自清华 值得信赖中国移动
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 印纸油墨项目融资渠道探索
- 健身中心游泳项目责任豁免合同(2024年度)版B版
- CMOS图像传感器项目融资渠道探索
- 正式的二手房买卖合同
- 基于人工智能技术的教育培训合同
- 软件开发外包质量不达标责任豁免合同
- 边坡治理工程施工合同范本
- 东莞个人店铺房租赁合同范本
- 2024-2030年中国自行车头盔行业发展前景预测及投资战略咨询报告
- 增强现实+教育培训服务合同
- 2025年度新能源汽车充电站运营权转让合同样本4篇
- 第5课 隋唐时期的民族交往与交融 课件(23张) 2024-2025学年统编版七年级历史下册
- 2024年全国职业院校技能大赛高职组(生产事故应急救援赛项)考试题库(含答案)
- 老年上消化道出血急诊诊疗专家共识2024
- 广东省广州黄埔区2023-2024学年八年级上学期期末物理试卷(含答案)
- 学校安全工作计划及行事历
- 《GMP基础知识培训》课件
- 2025届江苏省无锡市天一中学高一上数学期末质量检测试题含解析
- 数学家华罗庚课件
- 贵州茅台酒股份有限公司招聘笔试题库2024
- 《纳米技术简介》课件
评论
0/150
提交评论