Java面向对象之欧阳科创编.docx
《Java面向对象之欧阳科创编.docx》由会员分享,可在线阅读,更多相关《Java面向对象之欧阳科创编.docx(24页珍藏版)》请在冰豆网上搜索。
Java面向对象之欧阳科创编
Java面向对象编程
时间:
2021.02.05
创作:
欧阳科
-小朋友
Java第一章
Java开放工具:
JDKMyeclipseJcreatorEditPlus
Myeclipse流行版本:
5.5-6.5-8.5
JavaJDK安装配置
JDK:
Java开发工具包(J2SESoftwareDevelopmentKit)的缩写
JDK安装文件说明:
bin:
Java常用开发工具目录
JRE:
是Java运行环境(JavaRuntimeEnviroment)的缩写
demo:
Java开发的示范例子
include:
Java提供用于c/c++调用的.h文件
sample:
Java案例
lib:
Java类库目录
首先安装JDK。
一路NEXT就行了
Windows环境变量设置:
我的电脑右键属性。
高级。
环境变量。
主要配置两个目录:
BIN文件夹。
和lib文件夹。
以下为JDK,BIN文件环境配置
PATH:
我的电脑右键属性。
高级。
环境变量。
系统环境变量。
PATH。
编辑。
在变量值最后加一个;(英文状态下输入的),然后在;后面写上bin文件夹的路径。
例:
;D:
\程序安装\系统工具\编程设计\jdk\bin
如图:
BIN设置好了然后再设置LIB:
新建---变量值:
.;+路径
设置好了环境变量也就OK了
查看是否设置正确:
开始—运行—cmd—path
开始—运行—cmd—setclasspath
看见路径OK了。
环境变量也就配置完鸟。
下面开始写简单的Java程序:
新建记事本;
1//这是一行注释
2publicclassTest{
3
4publicstaticvoidmain(String[]args){
5System.out.println("WelcometoJavaProgramming!
");
6}//main方法结束
7
8}//类结束
publicclassTest{
publicstaticvoidmain(String[]args){
System.out.println("HelloWorld!
");
}
}
**************************************************************
保存为:
Test.java
行1:
注释:
用来说明程序的作用
行2:
开始声明一个类,类名为Welcome,class是JAVA的关键字,用来定义类,public为访问说明。
在这里声明了一个类,类的名字为Welcome.
行3,7,9:
空行,用来增加程序的可读性
行4:
是JAVA应用程序必须包含的方法,被称为入口方法:
程序运行时从这里开始执行,其形式必须是:
publicstaticvoidmain(String[]args)或者
staticpublicvoidmain(String[]args)
上面的语句里,只能修改args这个字符串数组的名字。
static表示直接能够加载该方法运行。
void是方法的返回类型,每个方法必须有返回类型(除了构造方法)。
main是方法的名字,是程序的入口调用的方法。
String[]是方法的参数,必须是String数组类型的。
行5:
System.out.println("WelcometoJavaProgramming!
");
/*
输出字符串,双引号中的字符串会在控制台输出。
*/
Bin文件夹下JAVAC是编译器。
JAVA是执行
把Test.JAVA文件复制到C盘。
然后:
开始—运行—CMD—cd:
c:
\--javacTest.java(在CMD下输入文件名的时候可以按TAB键自动补全文件名)—开始编译,并在C盘目录下生成Test.class文件--javaTest—显示结果HeeloWorld!
OK,现在已经编译了一个简单的JAVA程序了
简单看下流程:
第二章:
变量与函数
1;变量;
变量是Java 程序的一个基本存储单元。
变量由一个标识符,类型及一个可选初始值的组合定义。
此外,所有的变量都有一个作用域,定义变量的可见性,生存期。
接下来讨论变量的这些元素。
在Java 中,所有的变量必须先声明再使用
定义变量:
⏹byteage;(存放某人的年龄)
⏹shortnumber;(存放某大学人数)
⏹chargender;(存放某人性别)
⏹doublebalance;(存放某帐户的余额)
⏹booleanflag;(存放布尔值)
变量一经定义,系统将为其分配一定长度的内存存储空间,在程序中使用到该变量时,就需要在对应的内存中进行读数据或写数据,通常称这种操作为对变量的访问。
基本数据类型:
数据类型名称
数据类型标识
占据存储空间
取值范围
布尔型
boolean
1bit
true(非0),或false(0)
整型
byte
8bits(1Byte)
-128~+127
short
16bits(2Bytes)
-32768~+32767
int
32bits(4Bytes)
-21亿~+21亿
long
64bits(8Bytes)
-9.2×1018~+9.2×1018
浮点型
float
32bits(4Bytes)
7位精度
double
64bits(8Bytes)
15位精度
字符型
char
16bits(2Bytes)
Unicode字符
*******************************************************************************
*******************************************************************************
⏹赋值语句的一般形式为:
variable=expression;
⏹在这里“=”不是数学中的等号,而是赋值运算符,其功能是将右边表达式的值赋(即传递或存入)给左边的变量,例如:
⏹inti,j;
⏹charc;
⏹i=100;
⏹c=‘a’
⏹j=i+100;
⏹i=j*10;
实例:
classTest{
publicstaticvoidmain(String[]args){
intage=18;
System.out.println("我的年龄:
"+age);
}
}
publicclassTest1{
privateintage;
privateStringname;
publicvoidsetAge(inta){
age=a;
}
publicvoidsetName(Stringn){
name=n;
}
publicvoidtell()
{
System.out.println("我是:
"+name);
}
publicvoidshowAge(){
System.out.println("我的年龄是:
"+age);
}
}
*******************************************************************************
复合赋值语句。
publicclassTest
{
publicstaticvoidmain(String[]args)
{
inti=0,j=30,k=10;
i+=k;//相当于i=i+k;
j-=k;//相当于j=j-k;
i*=k;//相当于i=i*k;
j/=k;//相当于j=j/k;
k%=i+j;//相当于k=k%(i+j);
System.out.println("i="+i);
System.out.println("j="+j);
System.out.println("k="+k);
}
}
*******************************************************************************
第三章:
Java程序控制
单分支条件语句
⏹单分支条件语句的一般格式是:
*******************************************************************************
if(表达式)
{语句;}
*******************************************************************************
if(表达式1)
语句1;
elseif(布尔表达式2)
语句2;
else
语句3;
*******************************************************************************
if(表达式1)
if(表达式2)
语句1;
else
语句2;
else
语句3;
*******************************************************************************
if(表达式1)
if(表达式2)
语句1;
*******************************************************************************do-while循环:
Do(
)
While(conditiont)
*******************************************************************************
switch语句
switch(表达式)
{case判断值1:
语句1;
case判断值2:
语句2;
...
case判断值n:
语句n;
[default:
语句n+1;]
}
*******************************************************************************
实例:
①IF:
publicclassTest
{
publicstaticvoidmain(String[]args)
{
byteage=20;
if(age>=18)
System.out.println("合法");
if(age<18)
System.out.println("不合法");
}
}
*******************************************************************************
②:
switch
*******************************************************************************
switch(day)
{case0:
System.out.println(day+"表示是星期日");
break;
case1:
System.out.println(day+"表示是星期一");
break;
case2:
System.out.println(day+"表示是星期二");
break;
case3:
System.out.println(day+"表示是星期三");
break;
case4:
System.out.println(day+"表示是星期四");
break;
case5:
System.out.println(day+"表示是星期五");
break;
case6:
System.out.println(day+"表示是星期六");
break;
default:
System.out.println(day+"是无效数!
");}
第四-五章:
面向对象
状态:
变量
对象OOP的对象
行为:
方法
一:
类
1:
类----对象
格式:
classtest{
//body
}
2:
声明:
注意事项:
Public时,类文件名必须和JAVA文件名一致。
[public][abstract|final]classTestName[extendssuperclassName]
[implenmentsinterfaceNameList]
Keywords:
Public:
访问权限-公共可调用。
Abstracr:
:
对父类修饰词,声明为抽象类时不可实例化;
Final:
子类修饰词当被声明问最终类时,它就不可以再有子类;
3:
构成:
成员变量:
由类声明定义的变量,用于描述类创建的对象的属性;
构成方法:
类体由方法构成。
可分为构造方法和普通方法
二:
对象
类与对象的关系:
类给出了属于该类的全部对象的抽象定义,而对象则是符合这种定义的一个实体。
类与对象之间的关系就如同一个模具与用这个模具铸造出来的铸件之间的关系一样。
也就是说,我们可以把类与对象之间的关系看成是抽象与具体的关系。
在面向对象的程序设计中,对象被称作类的一个实例(instance),而类是对象的模板(temp1ate)。
类是多个实例的综合抽象,而实例又是类的个体实物。
如图4.1所示为类与对象的关系。
1:
对象的创建:
声明;实例化;初始化
2:
对象的声明:
类名对象名字;
ClassTest{
Inta;
Stringname;
}
Testbeiju;Test为类名,beiju为对象名字
3:
实例化和初始化:
用new实例化一个对象,会用时调用类的构造方法对它进行初始化,如果没有写构造方法,系统会自动调用默认的构造方法。
默认构造方法不带参数
PublicBeiju()
{
}
PublicBeiju(inti)/*构造*/
{
a=i;
}
三:
对象的使用
1:
使用对象的变量
.运算符(实现对自己变量的访问)
格式:
Test.beiju
2:
调用方法;对象名.方法名
实例:
Test.java
packagecom.Java.ok.ui;
/*
*类,包含属性和方法
*/
publicclassTest{
Stringname;
charsex;
intage;
floatheight;
/*
*方法
*/
publicvoidshow()
{
System.out.println("我的姓名:
"+name);
System.out.println("我的年龄:
"+age);
System.out.println("我的身高:
"+height);
System.out.println("我的性别:
"+sex);
}
}
Test1.java
packagecom.Java.ok.ui;
publicclassTest1{
/*
*测试类
*/
publicstaticvoidmain(String[]args){
Testtx=newTest();
tx.age=23;
tx.name="beiju";
tx.height=175;
tx.sex='男';
tx.show();
}
}
四:
属性
static修饰的静态数据成员
用static修饰符修饰的数据成员是不属于任何一个类的具体对象,而是属于类的静态数据成员。
其特点如下:
(1)它被保存在类的内存区的公共存储单元中,而不是保存在某个对象的内存区中。
因此,一个类的任何对象访问它时,存取到的都是相同的数值。
(2)可以通过类名加点操作符访问它。
(3)static类数据成员仍属于类的作用域,还可以使用publicstatic、privatestatic等进行修饰。
修饰符不同,可访问的层次也不同。
类变量:
static和实例变量对象可对final就行操作。
不可更改。
ClassStudent{
Inta;//实例变量
Douvbleb;//实例变量
Staticintc;//类变量
}
packagecom.Java.java.ui;
publicclasssa{
privatevoidmanin(){
Java1a1=newJava1();
Java1a2=newJava1();
a1.a=10;
a1.b=52;
System.out.println("Test"+a1.a+"and"+a1.b);
}
}
Other:
1:
方法申明和方法体
intgetTest(){//返回类型int
return1;
}
VoidsetInfo(Stringname,intage){…….
}
2:
构造方法
对象的初始化与构造方法:
(1)构造方法的方法名与类名相同。
(2)构造方法是类的方法,它能够简化对象数据成员的初始化操作。
(3)不能对构造方法指定类型,它有隐含的返回值,该值由系统内部使用。
(4)构造方法一般不能由编程人员显式地直接调用,在创建一个类的对象的同时,系统会自动调用该类的构造方法将新对象初始化。
(5)构造方法可以重载,即可定义多个具有不同参数的构造方法。
对象不可以调用构造方法,构造方法用于创建对象,与类名一致。
无返回值,不能用void。
类中不可以写构造方法。
若用该类创建对象时。
系统会自动调用默认的构造方法。
默认的构造方法不带任何参数
Classbeiju{
beiju(){
}
beiju(Stringname){
}
beiju(Stringname,intage){
}
}
3:
类方法与实例方法
其他方法:
PublicclassTest{
Publicstaticvoid}
形式参数与实际参数
一般来说,可通过如下的格式来引用成员方法:
成员方法名(实参列表)
但在引用时应注意下述问题:
(1)对于无参成员方法来说,是没有实参列表的,但方法名后的括弧不能省略。
(2)对于带参数的成员方法来说,实参的个数、顺序以及它们的数据类型必须与形式参数的个数、顺序以及它们的数据类型保持一致,各个实参间用逗号分隔。
实参名与形参名可以相同也可以不同。
(3)实参也可以是表达式,此时一定要注意使表达式的数据类型与形参的数据类型相同,或者使表达式的类型按Java类型转换规则达到形参指明的数据类型。
(4)实参变量对形参变量的数据传递是“值传递”,即只能由实参传递给形参,而不能由形参传递给实参。
程序中执行到引用成员方法时,Java把实参值拷贝到一个临时的存储区(栈)中,形参的任何修改都在栈中进行,当退出该成员方法时,Java自动清除栈中的内容。
【示例程序】
publicclassTest
{
staticvoidadd(doublex,doubley)
{doublez;
z=x+y;
System.out.println("z="+z);
x=x+3.2;y=y+1.2;
System.out.println("x="+x+"\ty="+y);
}
staticdoubleadd1(doubley1,doubley2)
{doublez;
z=y1+y2+2.9;
returnz;
}
publicstaticvoidmain(String[]args)
{inta=2,b=7;
doublef1=2,f2=4,f3;
add(a,b);//按Java的类型转换规则达到形参类型
System.out.println("a="+a+"\tb="+b);
//f3=add1(f1,f2,3.5);错,实参与形参参数个数不一致
f3=2+add1(f1,f2);
System.out.println("f1="+f1+"\tf2="+f2+"\tf3="+f3);
}
}
该程序的运行结果如下:
z=9.0
x=5.2y=8.2
a=2b=7
f1=2.0f2=4.0f3=10.9
成员方法的引用方式
成员方法的引用可有下述几种方式。
1.方法语句
成员方法作为一个独立的语句被引用。
例如,程序c4_12.java中的“add(a,b);”语句就是这种形式。
2.方法表达式
成员方法作为表达式中的一部分,通过表达式被引用。
例如,程序c4_12.java中的“f3=2+add1(f1,f2);”语句就是这种形式。
3.方法作为参数
一个成员方法作为另一个成员方法的参数被引用。
例如,程序c4_13.java中的“add(a,add1(f1,f2));”语句就是这种形式的代表。
更为典型的是,在递归的成员方法中,一个成员方法作为它自身的参数被引用。
4.通过对象来引用
这里有两重含义,一是通过形如“对象名.方法名”的形式来引用对象,二是当一个对象作为成员方法的参数时,通过这个对象参数来引用对象的成员方法。
例如,程序c4_3.java的“Dane.ShowDog(g,25,25);”语句,成员方法ShowDog()本身通过对象Dane来引用;同时,通过作为参数的对象g引用了Graphics类的成员方法drawString()。
第六章:
JAVA的封装多态继承
一、类的封装
定义:
类中包含有一个或多个成员变量和方法;
定义的public的方法是这个类对外的接口部分,通过调用它们可以与当前类交换信息;
通过接口部分修改类中某些属性,从而避免直接修改类中的数据,这体现了数据封装思想;封装机制就是类包含有成员变量和方法,类的设计者为用户提供类对象可以访问的部分,而对于类中的其他成员变量和方法隐藏起来,用户无法访问…
特性:
在类的定义中设置对对象中的成员变量和方法进行访问的权限;
提供一个统一供其他类引用的访问;
其它对象不能直接修改本对象所拥有的属性和方法。
修饰符:
类:
public、缺省
属性和方法:
public、private、protected、privateprotected、缺省
①:
public
可以被所有的其他类访问和引用,可以访问这个类内部的可见的成员变量、调用可见的方法。
若成员变量声明为public,其他类的方法可以直接访问它,但这样破坏了封闭性
若方法声明为public,其他类可以直