java面向对象思想解读.docx
- 文档编号:24505453
- 上传时间:2023-05-28
- 格式:DOCX
- 页数:23
- 大小:27.14KB
java面向对象思想解读.docx
《java面向对象思想解读.docx》由会员分享,可在线阅读,更多相关《java面向对象思想解读.docx(23页珍藏版)》请在冰豆网上搜索。
java面向对象思想解读
1Java平台有三个版本
–JavaME:
微型版,用于开发小型设备、智能卡、移动终端应用;(使用率较低)(是做手机软件的)
–JavaSE:
标准版,用于创建桌面应用。
(企业用JavaSE创建桌面应用较少)
–JavaEE:
企业版,用于创建企业应用。
(JavaEE是JavaSE的升级版,语言基础依然是JavaSE,核心算法依然使用JavaSE)
简单地说
–JavaSE是做电脑上运行的软件。
(坦克大战,QQ,扫雷,连连看)
–JavaEE是用来做网站的-(我们常见的JSP技术)
–JavaME是做手机软件的。
学习JAVA从哪开始?
或者我们可以说,需要先学习那个java版本?
有道是“万丈高楼平地起”,通过上面的介绍我们就可以知道,学习java编程,无论想从事哪个方面的程序开发,必须要把基础打好,因此,学习java应该从javase开始学习。
学习JavaSE后能做什么?
–可以做桌面应用程序,例如扫雷游戏、连连看游戏
–可以做C/S结构的网络应用,例如即时通讯软件
学习JavaSE后不能做什么?
–不能做Web应用,例如网上商城
–不能做Android应用
为什么要学JavaSE?
–是JavaEE的必备基础
–是Android应用开发的必备基础
–是掌握面向对象编程思想的必要课程
–
Java语言的特点
跨平台
解释执行
面向对象(应逐步建立面向对象的编程思想)
自动垃圾回收
鲁棒
支持多线程编程
简单性
✓Java语言特点
–跨平台(可移植、一次编写,处处运行)
✓简言之,跨平台的含义是使用Java语言开发应用,不需要为不同的平台开发不同的程序,而是只开发一套应用,就可以运行在不同的平台上。
✓Java语言特点
–解释执行
✓解释执行的含义是,Java程序编译之后,只是生成了class文件,称为字节码,并不是机器码。
在执行时,JVM中的解释器,会根据当前平台的特征,对class文件进行解释,生成符合当前规范的机器码,得以运行。
✓Java语言特点
–面向对象的语言
✓Java语言是一门面向对象语言,具备面向对象语言三大特征:
封装、继承、多态。
✓Java语言特点
–自动垃圾回收
✓程序员无权回收内存。
系统级线程跟踪每一个存储空间的分配情况,在JVM空闲周期,垃圾收集线程检查,释放内存。
✓Java语言特点
–鲁棒
✓鲁棒即健壮的意思,Java语言从编译到运行期,都有很多机制,以保证其程序的鲁棒性,如异常处理机制,也是保证鲁棒性的重要手段。
✓Java语言特点
支持多线程编程
✓Java语言特点
学习Java编程相对容易
Java语言取消了很多容易混淆的概念,比如多继承、goto语句等。
Java也没有指针的概念,也不支持头文件
2JDK简介
–JDK(JavaDevelopmentKit):
给Java开发人员使用的工具包,包括Java的开发工具,也包括JRE。
其中开发工具中包括编译工具(javac.exe)、运行工具(java.exe)、打包工具(jar.exe)等。
–JRE(JavaRuntimeEnviroment):
Java的运行环境,包括Java虚拟机和Java程序运行所需的核心类库。
–两者之间的关系
•JDK=JRE+开发工具
•JRE=JVM+核心类库
在记事本中编写Java类
publicclassTest{
publicstaticvoidmain(String[]args){
System.out.println("Test");
}
}
使用命令行编译运行
–javacTest.java
–javaTest
创建工作空间,即workspace;
选择适合的Perspective,如JavaPerspective;
创建JavaProject;
在src目录下创建JavaClass;
运行有main方法的Java类,在Console视图中查看结果。
安装结束后,打开安装后的路径,一般情况下位于:
C:
\ProgramFiles\Java下
path主要为了能找到开发过程中使用的工具,比如javac、java等
Java_home为了能找到JDK的安装路径
可以根据情况为学生介绍一些DOS命令,但是不推荐用太多时间,可以穿插在课程中。
临时环境变量配置(要用到命令行方式,用到set命令的使用,在dos里面进行运行)
查看:
setpath
配置:
setpath=hahah
删除:
setpath=
查看版本:
javac-version
要是想保留已有的环境那么就用:
setpath=C:
\programe\jdk\jre;%path%
磁盘符号:
/*用于执行打开一个磁盘*/
dir:
使用来查看文件夹中的文件目录
cd(changedirection)+文件路径,用于进入某个文件
md:
创建目录
cd..用于返回上一级目录,返回cd的最近的一次操作
cd\直接回到根目录
rd:
删除目录
windows在命令行删除一个文件夹,是从里面往外面删
del:
删除文件
exit退出命令行参数
超级强大的命令:
help
在工作过程中,都会使用集成开发工具来写程序,因此,我们也要尽快熟悉常用的集成开发工具Eclipse。
解释工作空间(workspace)、透视图(perspective)、Project(工程)的概念。
工作空间就是使用Eclipse编程时,文件存储的一个目录,下面可以有多个工程。
透视图是Eclipse中的一个概念,不同的透视图将展示一种当前主题下便捷的视图布局。
Project是组织源文件的一个概念。
声明一个类,类中有属性、方法。
保证编译成功。
publicclassPerson{
Stringname;
intage;
publicvoidsetAge(intage){
this.age=age;
}
}(答案不唯一)
3类的声明形式
●类的声明形式(【】中是可选项,即可有可无)
【访问权限修饰符】【修饰符】class类名{
类体
}
访问修饰符有两种public,default
修饰符:
final,synchronized,abstract
类的作用:
类就是一个模板,定义多个对象共同的属性和方法
publicclassStudent{
privateStringname;
publicvoidstudy(){
}
}
声明一个公共的学生类。
publicclassStudent{
}
3属性
属性的定义
属性即对象的数据
注:
属性又称为成员变量,是声明在类中的变量,在方法体中声明的变量称为局部变量或临时变量,后续详细学习。
属性的声明方式
【访问权限修饰符】【修饰符】数据类型属性名【=初值】;
privateStringname;
privatedoublesalary;
privatestaticintcount=0;
1.类的属性是声明在类体中的数据,通常使用private权限修饰符。
指的是该属性只能在当前类中使用。
也可以选择使用public、protected或者默认权限。
2.属性必须在声明的时候指定数据类型。
Java中有两种数据类型,一种是基本数据类型,如byte、short、int、long、float、double、char、boolean。
其他的都是引用类型。
在学生类中,声明一个私有属性姓名,一个公有属性学号,一个私有属性年龄。
学号的初始值是“000132”
publicclassStudent{
privateStringname;
publicStringstuNo="000132";
privateintage;
}
4方法的声明形式
Java类中的方法声明形式(【】中的内容是可选项,即可有可无)
【访问权限修饰符】【修饰符】返回值数据类型方法名(形式参数列表){
执行语句;
return返回值;
}
方法即对象的行为
什么是方法
–方法就是定义在类中具有特定功能的一段独立的小程序
–方法也称为函数。
访问权限修饰符及修饰符
–访问权限控制方法被调用的范围
–修饰符包括static/final/abstract/synchronized
–都在后续学习中详细学习
返回值类型
–方法运行后的返回结果的数据类型,如果没有返回值使用void。
参数类型
–形式参数的数据类型。
形式参数
–就是一个变量,用于存储调用方法时传递给方法的实际参数。
return
–用于结束方法。
返回值
该方法执行后的结果,该结果会返回给调用者
特殊情况:
没有返回值类型用void关键字来表示。
return的后面直接用;号结束,return可以省略不写。
方法的特点:
定义方法可以将功能代码进行封装。
便于该功能进行复用。
方法只有被调用才会被执行。
方法的出现提高代码的复用性。
方法若没有返回值,则用关键字void表示,那么该方法中的return语句如果在最后一行可以省略不写。
方法中可以调用方法,不可以在方法内部定义方法。
定义方法时,方法的结果应返回给调用者,交由调用者来处理
定义方法需思考三点
–方法是否有返回的结果,如果有,返回什么类型的结果?
–明确方法是否需要参数,如果需要,需要几个什么类型的参数?
–方法如何才能正确得到想要的结果?
在学生类中,声明一个私有属性姓名,一个公有属性学号,一个私有属性年龄。
学号的初始值是“000132”。
对三个属性声明get和set方法。
publicclassStudent{
privateStringname;
publicStringstuNo="000132";
privateintage;
publicStringgetName(){
returnname;
}
publicvoidsetName(Stringname){
this.name=name;
}
publicStringgetStuNo(){
returnstuNo;
}
publicvoidsetStuNo(StringstuNo){
this.stuNo=stuNo;
}
publicintgetAge(){
returnage;
}
publicvoidsetAge(intage){
this.age=age;
}
}
5方法重载
定义:
在Java中如果有多个同名但是不同参数的方法就成为“方法的重载”
编译器会根据调用时传递的实际参数自动判断具体调用的是哪个重载方法,如:
/*add方法的重载*/
intadd(intx,intc){……}
floatadd(floatx,intc){……}
doubleadd(doublex,doublex){……}
longadd(intx,intx,intx){……}
方法重载的三大原则
方法名相同
参数不同(可以有三方面的不同)
–数量不同
–类型不同
–顺序不同
同一作用域
注意:
方法重载跟方法的返回值类型没有任何关系。
也就是说,只有返回值不同的方法不能构成重载。
/*错误的方法重载*/
voidfun(intx){……};
intfun(intx){……};
方法重载的作用域规则
只有属于同一作用域范围内的方法才能构成重载。
classFirst
{
……
publicvoidshow()
{
……
}
……
}
classSecond
{
……
publicvoidshow(intx)
{
……
}
……
方法重载注意
同一作用域
注意:
方法重载跟方法的返回值类型没有任何关系。
也就是说,只有返回值不同的方法不能构成重载。
/*错误的方法重载*/
voidfun(intx){……};
intfun(intx){……};
请勿将功能完全不一样的方法进行重载!
方法重载的代码实例
publicclassOverloadTest{
//定义一个方法求两个整数的相加
publicvoidadd(inta,intb){
intsum=a+b;
System.out.println("两个整数相加的和是:
"+(a+b));
}
//定义一个方法求三个整数的相加
publicintadd(inta,intb,intc){
returna+b+c;
}
//定义一个方法求两个浮点数的相加
protecteddoubleadd(doublea,doubleb){
returna+b;
}
//定义一个方法求一个整数数和一个小数的相加
voidadd(inta,doubleb){
doublesum=a+b;
System.out.println("两个整数相加的和是:
"+sum);
}
自行设计一个类,设计类中方法重载。
publicclassCalculator{
publicintadd(intx,inty){
returnx+y;
}
publicStringadd(Strings1,Strings2){
returns1+s2;
}
}(答案不唯一)
6构造方法作用
要想使用Java类,必须创建类的对象,即对类进行实例化。
而创建对象就必须使用构造方法。
因此,构造方法几乎是一个类必须有的元素。
构造方法的作用:
用来对类进行实例化,即创建对象。
构造方法的组成
【访问权限修饰符】类名(形式参数列表){方法体}
举例
publicclassCar{
privateStringcolor;
privatedoubleprice;
publicCar(){
}
publicCar(Stringcolor){
this.color=color;
}
publicCar(Stringcolor,doubleprice){
this.color=color;
this.price=price;
}
}
构造方法与方法区别
构造方法
是用在实例化对象的时候调用的
没有返回值,连void都没有
方法名必须与类名相同
不能使用修饰符,包括static、final、abstract
方法
分静态方法和非静态方法
可以使用修饰符,包括static、final、abstract
静态方法可用类名直接调用,非静态方法要用对象调用(后续学习)
返回值可有可无,如果没有声明时要加void
方法名最好不跟类名一样
默认构造方法
为什么创建了类后,不写构造方法,依然可以使用new进行实例化呢?
任何一个Java类都默认有一个无参构造方法。
也就是说,即使类中没有声明无参的构造方法,照样可以直接使用没有参数的构造方法。
然而,只要在一个Java类中定义了一个构造方法后,默认的无参构造方法即失效。
设计银行账号类,定义卡号、余额属性,定义取款存款方法。
publicclassAccount{
privateStringid;
privatedoublebalance;
publicAccount(){
System.out.println("Account()");
}
publicStringgetId(){
returnid;
}
publicvoidsetId(Stringid){
this.id=id;
}
publicdoublegetBalance(){
returnbalance;
}
publicvoidsetBalance(doublebalance){
this.balance=balance;
}
publicvoiddeposit(doubleamount){
balance+=amount;
inform("存款"+amount);
}
publicvoidwithdraw(doubleamount){
balance-=amount;
}
publicvoidinform(Stringmsg){
System.out.println("卡号是"+id+"的客户请注意:
"+msg);
}
}
7方法重载定义
在一个类中,如果有多个同名但是不同参的方法,称为“方法重载(overload)”。
所谓不同参,可能是形式参数的个数不同,或者类型不同,顺序不同。
方法重载能够增强程序的可读性。
构造方法重载在什么情况下使用
在实际的开发中,初始化对象时会传不同的参数,因此需要在一个类中定义多个构造方法,即进行构造方法重载。
publicCars(Stringcolor){
this.color=color;
}
publicCars(Stringcolor,doubleprice){
this.color=color;
this.price=price;
}
构造方法重载注意事项
无参的构造方法,只有在该类没有声明任何构造方法的时候,才是默认存在的;
只要声明了其他带参的构造方法,无参的构造方法将不会默认存在,而是必须声明才可以使用。
publicclassCars{
privateStringcolor;
privatedoubleprice;
publicCars(Stringcolor){
this.color=color;
}
}
Cars类中不再有默认无参数构造方法,如果需要使用,必须显式声明无参构造方法。
设计银行账号类,定义卡号、余额属性,定义取款存款方法,定义至少两个构造方法。
publicclassAccount{
privateStringid;
privatedoublebalance;
publicAccount(){
System.out.println("Account()");
}
publicAccount(Stringid,doublebalance){
this.id=id;
this.balance=balance;
System.out.println("Account(Stringid,doublebalance)");
}
publicStringgetId(){
returnid;
}
publicvoidsetId(Stringid){
this.id=id;
}
publicdoublegetBalance(){
returnbalance;
}
publicvoidsetBalance(doublebalance){
this.balance=balance;
}
publicvoiddeposit(doubleamount){
balance+=amount;
inform("存款"+amount);
}
publicvoidwithdraw(doubleamount){
balance-=amount;
}
publicvoidinform(Stringmsg){
System.out.println("卡号是"+id+"的客户请注意:
"+msg);
}
}
设计银行账号类,定义卡号、余额属性,定义取款存款方法,定义至少两个构造方法。
在main方法中创建对象,测试存款取款方法。
publicclassAccount{
privateStringid;
privatedoublebalance;
publicAccount(){
System.out.println("Account()");
}
publicAccount(Stringid,doublebalance){
this.id=id;
this.balance=balance;
System.out.println("Account(Stringid,doublebalance)");
}
publicStringgetId(){
returnid;
}
publicvoidsetId(Stringid){
this.id=id;
}
publicdoublegetBalance(){
returnbalance;
}
publicvoidsetBalance(doublebalance){
this.balance=balance;
}
publicvoiddeposit(doubleamount){
balance+=amount;
inform("存款"+amount);
}
publicvoidwithdraw(doubleamount){
balance-=amount;
}
publicvoidinform(Stringmsg){
System.out.println("卡号是"+id+"的客户请注意:
"+msg);
}
}
8创建对象的过程
假设存在一个类Person,创建对象语句如下所示
Personp=newPerson();
将上面的语句分为两个步骤:
Personp;
p=newPerson();
创建一个对象后,其实有两个实体:
对象引用变量,在栈空间,即p,称为引用,或句柄,存的是对象的虚地址
对象本身,即使用newPerson()在堆空间里创建的实体,将对象的属性值存储到堆里
可以使用引用变量操作对象的属性和方法
尽管它们也是确确实实存在的实体,但是似乎很难准确的“抓”住它。
我们仔细研究一下第二句,找找刚创建的对象叫什么名字?
有人说,它叫“Person”。
不对,“Person”是类(对象的创建模板)的名字。
一个Person类可以据此创建出无数个对象,这些对象不可能全叫“P
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 面向 对象 思想 解读
![提示](https://static.bdocx.com/images/bang_tan.gif)