Java编程详解大全.docx

上传人:b****3 文档编号:5444531 上传时间:2022-12-16 格式:DOCX 页数:175 大小:713.96KB
下载 相关 举报
Java编程详解大全.docx_第1页
第1页 / 共175页
Java编程详解大全.docx_第2页
第2页 / 共175页
Java编程详解大全.docx_第3页
第3页 / 共175页
Java编程详解大全.docx_第4页
第4页 / 共175页
Java编程详解大全.docx_第5页
第5页 / 共175页
点击查看更多>>
下载资源
资源描述

Java编程详解大全.docx

《Java编程详解大全.docx》由会员分享,可在线阅读,更多相关《Java编程详解大全.docx(175页珍藏版)》请在冰豆网上搜索。

Java编程详解大全.docx

Java编程详解大全

纲要

面向过程与面向对象的区别。

面向对象的三大特性

类与对象的概念

类的定义

对象的创建和使用

Java中的封装特性

构造函数

对象内存分析及引用传递

this关键字

static关键字

单例模式初步

类的继承

方法的覆盖

super关键字

final关键字

抽象类

接口

多态

抽象类与接口的区别

Object类

package和import

访问权限控制

内容

1.1、面向过程与面向对象的区别(盖饭、蛋炒饭)

为什么会出现面向对象分析方法?

因为现实世界太复杂多变,面向过程的分析方法无法满足

面向过程?

采用面向过程必须了解整个过程,每个步骤都有因果关系,每个因果关系都构成了一个步骤,多个步骤就构成了一个系统,因为存在因果关系每个步骤很难分离,非常紧密,当任何一步骤出现问题,将会影响到所有的系统。

如:

采用面向过程生产电脑,那么他不会分CPU、主板和硬盘,它会按照电脑的工作流程一次成型。

面向对象?

面向对象对会将现实世界分割成不同的单元(对象),实现各个对象,如果完成某个功能,只需要将各个对象协作起来就可以。

1.2、面向对象的三大特性

●封装

●继承

●多态

1.3、类与对象的概念

类是对具有共性事物的抽象描述,是在概念上的一个定义,那么如何发现类呢?

通常根据名词(概念)来发现类,如在成绩管理系统中:

学生、班级、课程、成绩

学生—张三

班级—602

课程—J2SE

成绩—张三成绩

以上“张三”、“602”、“J2SE”和“张三的成绩”他们是具体存在的,称为对象,也叫实例

也就是说一个类的具体化,就是对象或实例

为什么面向对象成为主流技术,主要就是因为更符合人的思维模式,更容易的分析现实世界,所以在程序设计中也采用了面向对象的技术,从软件的开发的生命周期来看,基于面向对象可以分为三个阶段:

●OOA(面向对象的分析)

●OOD(面向对象的设计)

●OOP(面向对象的编程)-----Java就是一个纯面向对象的语言

我们再进一步的展开,首先看看学生:

学生:

学号、姓名、性别、地址,班级

班级:

班级代码、班级名称

课程:

课程代码、课程名称

成绩:

学生、课程、成绩

大家看到以上我们分析出来的都是类的属性

接下来采用简易的图形来描述一下,来描述我们的概念(来源成绩管理系统的概念,来源于领域的概念,这个领域就是成绩系统管理领域)

以上描述的是类的属性,也就是状态信息,接下来,再做进一步的细化

通过以上分析,大家应该了解:

类=属性+方法

属性来源于类的状态,而方法来源于动作

以上模型完全可以使用面向对象的语言,如Java来实现

1.4、类的定义

在Java中如何定义类?

具体格式:

类的修饰符class类名extends父对象名称implements接口名称{

类体:

属性和方法组成

}

【示例代码】

publicclassStudent{

//学号

intid;

//姓名

Stringname;

//性别

booleansex;

//地址

Stringaddress;

//年龄

intage;

}

以上属性称为成员变量,局部变量是在方法中定义的变量,方法的参数,方法的返回值,局部变量使用前必须初始化,而成员变量会默认初始化,初始化的值名为该类型的默认值

1.5、对象的创建和使用

必须使用new创建出来,才能用。

【示例代码】

publicclassOOTest01{

publicstaticvoidmain(String[]args){

//创建一个对象

Studentzhangsan=newStudent();

System.out.println("id="+zhangsan.id);

System.out.println("name="+zhangsan.name);

System.out.println("sex="+zhangsan.sex);

System.out.println("address="+zhangsan.address);

System.out.println("age="+zhangsan.age);

}

}

classStudent{

//学号

intid;

//姓名

Stringname;

//性别

booleansex;

//地址

Stringaddress;

//年龄

intage;

}

具体默认值如下:

类型

默认值

byte

0

short

0

int

0

long

0L

char

‘\u0000’

float

0.0f

double

0.0d

boolean

false

引用类型

null

对成员变量进行赋值

publicclassOOTest02{

publicstaticvoidmain(String[]args){

//创建一个对象

Studentzhangsan=newStudent();

zhangsan.id=1001;

zhangsan.name="张三";

zhangsan.sex=true;

zhangsan.address="北京";

zhangsan.age=20;

System.out.println("id="+zhangsan.id);

System.out.println("name="+zhangsan.name);

System.out.println("sex="+zhangsan.sex);

System.out.println("address="+zhangsan.address);

System.out.println("age="+zhangsan.age);

}

}

classStudent{

//学号

intid;

//姓名

Stringname;

//性别

booleansex;

//地址

Stringaddress;

//年龄

intage;

}

一个类可以创建N个对象,成员变量只属于当前的对象(只属于对象,不属于类),只有通过对象才可以访问成员变量,通过类不能直接访问成员变量

以上程序存在缺点,年龄可以赋值为负数,怎么控制不能赋值为负数?

1.6、面向对象的封装性

控制对年龄的修改,年龄只能为大于等于0并且小于等于120的值

publicclassOOTest03{

publicstaticvoidmain(String[]args){

//创建一个对象

Studentzhangsan=newStudent();

/*

zhangsan.id=1001;

zhangsan.name="张三";

zhangsan.sex=true;

zhangsan.address="北京";

zhangsan.age=20;

*/

zhangsan.setId(1001);

zhangsan.setName("张三");

zhangsan.setSex(true);

zhangsan.setAddress("北京");

zhangsan.setAge(-20);

System.out.println("id="+zhangsan.id);

System.out.println("name="+zhangsan.name);

System.out.println("sex="+zhangsan.sex);

System.out.println("address="+zhangsan.address);

System.out.println("age="+zhangsan.age);

}

}

classStudent{

//学号

intid;

//姓名

Stringname;

//性别

booleansex;

//地址

Stringaddress;

//年龄

intage;

//设置学号

publicvoidsetId(intstudentId){

id=studentId;

}

//读取学号

publicintgetId(){

returnid;

}

publicvoidsetName(StringstudentName){

name=studentName;

}

publicStringgetName(){

returnname;

}

publicvoidsetSex(booleanstudentSex){

sex=studentSex;

}

publicbooleangetSex(){

returnsex;

}

publicvoidsetAddress(StringstudentAddress){

address=studentAddress;

}

publicStringgetAddress(){

returnaddress;

}

publicvoidsetAge(intstudentAge){

if(studentAge>=0&&studentAge<=120){

age=studentAge;

}

}

publicintgetAge(){

returnage;

}

}

从上面的示例,采用方法可以控制赋值的过程,加入了对年龄的检查,避免了直接操纵student属性,这就是封装,封装其实就是封装属性,让外界知道这个类的状态越少越好。

以上仍然不完善,采用属性仍然可以赋值,如果屏蔽掉属性的赋值,只采用方法赋值,如下:

publicclassOOTest04{

publicstaticvoidmain(String[]args){

//创建一个对象

Studentzhangsan=newStudent();

zhangsan.id=1001;

zhangsan.name="张三";

zhangsan.sex=true;

zhangsan.address="北京";

zhangsan.age=20;

/*

zhangsan.setId(1001);

zhangsan.setName("张三");

zhangsan.setSex(true);

zhangsan.setAddress("北京");

zhangsan.setAge(20);

*/

/*

System.out.println("id="+zhangsan.id);

System.out.println("name="+zhangsan.name);

System.out.println("sex="+zhangsan.sex);

System.out.println("address="+zhangsan.address);

System.out.println("age="+zhangsan.age);

*/

System.out.println("id="+zhangsan.getId());

System.out.println("name="+zhangsan.getName());

System.out.println("sex="+zhangsan.getSex());

System.out.println("address="+zhangsan.getAddress());

System.out.println("age="+zhangsan.getAge());

}

}

classStudent{

//学号

privateintid;

//姓名

privateStringname;

//性别

privatebooleansex;

//地址

privateStringaddress;

//年龄

privateintage;

//设置学号

publicvoidsetId(intstudentId){

id=studentId;

}

//读取学号

publicintgetId(){

returnid;

}

publicvoidsetName(StringstudentName){

name=studentName;

}

publicStringgetName(){

returnname;

}

publicvoidsetSex(booleanstudentSex){

sex=studentSex;

}

publicbooleangetSex(){

returnsex;

}

publicvoidsetAddress(StringstudentAddress){

address=studentAddress;

}

publicStringgetAddress(){

returnaddress;

}

publicvoidsetAge(intstudentAge){

if(studentAge>=0&&studentAge<=120){

age=studentAge;

}

}

publicintgetAge(){

returnage;

}

}

以上采用private来声明成员变量,那么此时的成员变量只属于Student,外界无法访问,这样就封装了我们的属性,那么属性只能通过方法访问,通过方法我们就可以控制对内部状态的读取权利。

封装属性,暴露方法(行为)

1.7、构造函数(构造方法,构造器)

构造方法主要用来创建类的实例化对象,可以完成创建实例化对象的初始化工作,声明格式:

构造方法修饰词列表类名(方法参数列表)

构造方法修饰词列表:

public、proteced、private

类的构造方法和普通方法一样可以进行重载

构造方法具有的特点:

●构造方法名称必须与类名一致

●构造方法不具有任何返回值类型,即没有返回值,关键字void也不能加入,加入后就不是构造方法了,就成了普通的方法了

●任何类都有构造方法,如果没有显示的定义,则系统会为该类定义一个默认的构造器,这个构造器不含任何参数,如果显示的定义了构造器,系统就不会创建默认的不含参数的构造器了。

【代码示例】,默认构造方法(也就是无参构造方法)

publicclassConstructorTest01{

publicstaticvoidmain(String[]args){

//创建一个对象

Studentzhangsan=newStudent();

zhangsan.setId(1001);

zhangsan.setName("张三");

zhangsan.setSex(true);

zhangsan.setAddress("北京");

zhangsan.setAge(20);

System.out.println("id="+zhangsan.getId());

System.out.println("name="+zhangsan.getName());

System.out.println("sex="+zhangsan.getSex());

System.out.println("address="+zhangsan.getAddress());

System.out.println("age="+zhangsan.getAge());

}

}

classStudent{

//学号

privateintid;

//姓名

privateStringname;

//性别

privatebooleansex;

//地址

privateStringaddress;

//年龄

privateintage;

//默认构造方法

publicStudent(){

//在创建对象的时候会执行该构造方法

//在创建对象的时候,如果需要做些事情,可以放在构造方法中

System.out.println("----------Student-------------");

}

//设置学号

publicvoidsetId(intstudentId){

id=studentId;

}

//读取学号

publicintgetId(){

returnid;

}

publicvoidsetName(StringstudentName){

name=studentName;

}

publicStringgetName(){

returnname;

}

publicvoidsetSex(booleanstudentSex){

sex=studentSex;

}

publicbooleangetSex(){

returnsex;

}

publicvoidsetAddress(StringstudentAddress){

address=studentAddress;

}

publicStringgetAddress(){

returnaddress;

}

publicvoidsetAge(intstudentAge){

if(studentAge>=0&&studentAge<=120){

age=studentAge;

}

}

publicintgetAge(){

returnage;

}

}

【代码示例】,带参数的构造方法

publicclassConstructorTest02{

publicstaticvoidmain(String[]args){

//调用带参数的构造方法对成员变量进行赋值

Studentzhangsan=newStudent(1001,"张三",true,"北京",20);

System.out.println("id="+zhangsan.getId());

System.out.println("name="+zhangsan.getName());

System.out.println("sex="+zhangsan.getSex());

System.out.println("address="+zhangsan.getAddress());

System.out.println("age="+zhangsan.getAge());

}

}

classStudent{

//学号

privateintid;

//姓名

privateStringname;

//性别

privatebooleansex;

//地址

privateStringaddress;

//年龄

privateintage;

publicStudent(intstudentId,StringstudentName,booleanstudentSex,StringstudentAddress,intstudentAge){

id=studentId;

name=studentName;

sex=studentSex;

address=studentAddress;

age=studentAge;

}

//设置学号

publicvoidsetId(intstudentId){

id=studentId;

}

//读取学号

publicintgetId(){

returnid;

}

publicvoidsetName(StringstudentName){

name=studentName;

}

publicStringgetName(){

returnname;

}

publicvoidsetSex(booleanstudentSex){

sex=studentSex;

}

publicbooleangetSex(){

returnsex;

}

publicvoidsetAddress(StringstudentAddress){

address=studentAddress;

}

publicStringgetAddress(){

returnaddress;

}

publicvoidsetAge(intstudentAge){

if(studentAge>=0&&studentAge<=120){

age=studentAge;

}

}

publicintgetAge(){

returnage;

}

}

【代码示例】,进一步理解默认构造方法

publicclassConstructorTest03{

pub

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1