java的学习入门到精通学习笔记2文档格式.docx
《java的学习入门到精通学习笔记2文档格式.docx》由会员分享,可在线阅读,更多相关《java的学习入门到精通学习笔记2文档格式.docx(20页珍藏版)》请在冰豆网上搜索。
java语言[面向对象]
类和对象的关系
把猫的特性提取出来-->
猫类-->
对象(实例)
-->
...
注意:
从猫类到对象,目前有几种说法:
1、创建一个对象;
2、实例化一个对象;
3、对类实例化...以后大家听到这些说法,不要模糊。
(对象就是实例,实例就是对象)java最大的特点就是面向对象。
//定义猫类
publicclassDemo105{
//创建一个猫对象
Catcat1=newCat();
//Cat是定义的一个数据类型
//Catcat1;
//cat1=newCat();
//等同于Catcat1=newCat();
//访问属性的对象名.属性名字
cat1.age=3;
cat1.name="
cat1.color="
//创建第二只猫
Catcat2=newCat();
cat2.age=100;
cat2.name="
cat2.color="
//java中如何定义一个类?
[类名的首写字母大写]可根据程序的需要定义类
classCat{
//下面的就是类的成员变量/属性
intagr;
Stringname;
Stringcolor;
MastermyMaster;
//引用类型,比如建个主人类
classMaster{
intage;
Stringaddress;
类和对象的区别和联系
1、类是抽象的,概念的,代表一类事物,比如人类,猫类..
2、对象是具体的,实际的,代表一个具体事物
3、类对象的模板,对象是类的一个个体,实例
类--如何定义类
一个全面的类定义比较复杂,如:
package包名;
class类名extends父类implements
接口名{
成员变量;
构造方法;
成员方法;
要透彻的掌握类,必须要了解类的构成
class类名{---->
待定...
类--类的成员变量
成员变量是类的一个组成部分,一般是基本数据类型,也可是引用类型。
比如我们前面定义猫类的intage就是成员变量。
对象--如何创建对象
创建一个对象有两种方法
1、先声明再创建
1、对象声明:
类名对象名
2、对象创建:
对象名=new类名()
2、一步到位法
类名对象名=new类名()
对象--如何访问(使用)对象的成员变量
对象名.变量名;
//简单先这样理解,以后加下控制符此表达就不准确了。
***对象总是存在内存中的
一个小思考题[Demo.105.java]
为了让大家加深印象,我们定义一个人类(Person)(包括名字、年龄)。
用一步到位法去创建一个对象
↓
我们看看下面一段代码:
System.out.printlin(b.age);
Persona=newPerson();
→请问:
b.age究竟是多少?
a.age=10;
a.name="
小明"
Personb;
b=a;
一个小思考题[Demo106.java]
在明白对象是如何在内存中存在后,请大家再看看下面的思考题,请问会输出什么信息?
Person1a=newPerson1();
Person1b;
System.out.println(b.name);
//输出“小明”
b.age=200;
System.out.println(a.age);
//输出a.age为200
*****重点也是难点
类--成员方法的初步介绍
在某些情况下,我们要需要定义成员方法。
比如人类:
除了有一些属性外(成员变量表示的年龄、姓名...),我们人类还有一些行为比如:
可以说话、跑步..,通过学习,我们人类还可以做算术题。
这时就要用成员方法才能完成。
现在要求对Person类完善:
1、添加speak成员方法,输入出:
我是一个好人
2、添加jisuan成员方法,可以计算从1+..+1000的结果
3、修改jisuan成员方法,该方法可以接收一个数n,计算从1+..+n的结果
4、添加add成员方法,可以计算两个数的和
类--类的成员方法(成员函数)定义
成员方法也叫成员函数,这里希望大家不要被两个名词搞晕了。
public返回数据类型方法名(参数列表)
{
语句;
//方法(函数)主体
1、参数列表:
表示成员函数输入
2、数据类型(返回类型):
表示成员函数输出
3、函数主体:
表示为了实现某一功能代码块
//类的调用及方法调用[Demo108.java]
publicclassDemo108{
Personp1=newPerson();
p1.speak();
//调用speak方法
p1.jiSuan();
//调用计算方法
p1.jiSuan(200);
//调用可以传入参数的计算方法
p1.add(12,10);
//调用两个数的和
intres=p1.add2(23,34);
//调用两个数的和并返回值到res中
System.out.println("
res返回值是:
+res);
num1+num2+num3="
+p1.add3(2,2.3f,4.5f));
//返回类型一定要一致否则报错。
//定义名字的几个方法:
//1、驼峰法如myCry;
2、下划线法my_cry
//方法名在有不同参数的情况下可以使用同一个方法名,即有参数和没参数的方法可以同名
classPerson{//请注意类名首写字母应为大写如Person为类名
//1、可以输出我是好人方法
publicvoidspeak(){//请注意方法名的首写字母应为小写如speak为方法名
System.out.println("
我是一个好人"
//2、可以计算1+..+1000的方法
publicvoidjiSuan(){
intresult=0;
for(inti=1;
i<
=1000;
i++){
result=result+i;
1+..+1000结果是"
+result);
//3、带参数的成员方法,可以输入n值并计算1+..+n
publicvoidjiSuan(intn){
=n;
result+=i;
1+..+n结果是"
//4、计算两个数的和
publicvoidadd(intnum1,intnum2){
//与下面一句等同于returnnum1+num2;
result=num1+num2;
num1+num2="
//5、计算两个数的和,并将结果返回给主调(调用它的)函数
//注意:
返回类型和返回结果的类型要一致
在调用某个成员方法的时候,给出的具体数值的个数
//和类型要相匹配。
publicintadd2(intnum1,intnum2){
returnnum1+num2;
//6、计算两个float数的和,并将结果返给主调函数
publicfloatadd3(intnum1,floatnum2,floatnum3){
returnnum1+num2+num3;
类--类的成员方法(函数)--如何理解
如何理解方法这个概念,给大家举个通俗的示例:
程序员调用方法:
给方法必要的输入,方法返回结果。
类的成员方法--声明
publicinttest(inta);
/*方法声明*/
这句话的作用是声明该方法,声明的格式为:
访问修饰符数据类型函数名(参数列表);
在给Person类添加add方法的例题中,我们看到的关键字return,它的功能是把表达式的值返回的值返回给主调函数的方法。
return表达式;
类的成员方法(函数)--特别说明
1、方法的参数列表可以是多个
案例:
在Person类中编写一个成员方法,从键盘输入三个数,返回最大的那个数。
参数列表可以是多个,并且数据类型可以是任意的类型intfloatdoublechar..
访问修饰符返回数据类型函数名(参数列表){
//函数主体
2、方法可以没有返回值
编写一个函数,从控制台输入一个整数打印出对应的金字塔。
返回类型可以是任意的数据类型(int,float,double,char..)也可以没有返回值void表示没有返回值
访问修饰符返回数据类型函数名(形参列表){
类的成员方法(函数)--小练习
编写一个成员函数,从键盘输入一个整数(1-9),打印出对应的乘法表[Demo110.java]
//实例键盘输入打印乘法表[Demo110.java]
importjava.io.*;
publicclassDemo110{
Cfbjiu=newCfb();
jiu.cf();
classCfb{
publicvoidcf(){
try{
//输入流,从键盘接收数
InputStreamReaderisr=newInputStreamReader(System.in);
BufferedReaderbr=newBufferedReader(isr);
//给出提示
请输入1-9,按0退出:
//从控制台读取一行数据
Stringa1=br.readLine();
//把String转为int
intnum1=Integer.decode(a1);
for(inti=1;
=num1;
for(intj=1;
j<
=i;
j++){
System.out.print(i+"
×
+j+"
="
+(i*j)+"
\t"
}
System.out.println();
}
}catch(Exceptione){
e.printStackTrace();
编写函数,使给定的一个二维数组(3×
3)转置
类定义的完善
在介绍了成员方法后,我们类的定义就可以完善一步:
class类名{class类名{待定
成员变量;
→成员变量;
→
}成员方法;
小结:
1.先设计类;
2.然后根据类创建对象。
小练习:
1、设计计算机类,要求如下:
[Demo109.java]
属性:
品牌(Brand)、颜色(Color)、cpu型号(CPU)、内存容量(Memory)、硬盘大小(Harddisk)、价格(Price)、工作状态(Work)
方法:
打开(Open)、关闭(Close)、休眠(Sleep)
创建一个计算机对象,调用打开,关闭方法
//计算机类与对象的代码
//加载IO流包
publicclassDemo109{
ComputerPc=newComputer();
Pc.Brand="
品牌"
Pc.Color="
颜色"
Pc.Cpu="
Cpu型号"
Pc.Memory="
内存容量"
Pc.Hd="
硬盘容量"
Pc.Price="
价格"
Pc.Work="
工作状态"
try{
//输入流,从键盘接收数
InputStreamReaderisr=newInputStreamReader(System.in);
BufferedReaderbr=newBufferedReader(isr);
//给出提示
请输入0-9控制机器"
//从控制台读取一行数据
Stringa1=br.readLine();
//把String转为float
floatnum1=Float.parseFloat(a1);
if(num1==0){Pc.open();
elseif(num1==1){Pc.close();
elseif(num1==2){Pc.sleep();
elseif(num1==3){System.out.println(Pc.Brand);
elseif(num1==4){System.out.println(Pc.Color);
elseif(num1==5){System.out.println(Pc.Cpu);
elseif(num1==6){System.out.println(Pc.Memory);
elseif(num1==7){System.out.println(Pc.Hd);
elseif(num1==8){System.out.println(Pc.Price);
elseif(num1==9){System.out.println(Pc.Work);
else{System.out.println("
输入错误!
}
}catch(Exceptione){
e.printStackTrace();
classComputer{
StringBrand;
StringColor;
StringCpu;
StringMemory;
StringHd;
StringPrice;
StringWork;
publicvoidopen(){
开机"
publicvoidclose(){
关机"
publicvoidsleep(){
休眠"
1、采用面向对象思想设计超级马里奥游戏人物
-------------------------------------------------------------------------------
2、java面向对象编程
(1)-构造方法(函数)
类的构造方法介绍
什么是构造方法呢?
在回答这个问题之前,我们来看一个需求:
前面我们在创建人类的对象时,是先把一个对象创建好后,再给他的年龄和姓名属性赋值,如果现在我要求,在创建人类的对象时,就直接指定这个对象的年龄和姓名,该怎么做?
↓
你可以在定义类的时候,定义一个构造方法即可。
构造方法是类的一种特殊的方法,它的主要作用是完成对新对象的初始化。
它有几个特点:
1、方法名和类名相同
2、没有返回值
3、在创建一个类的新对象时,系统会自动的调用该类的构造方法完成对新对象的初始化。
特别说明:
一个类可以定义多个不同的构造方法。
//例人类构造方法[Demo111.java]
publicclassDemo111{
Personp1=newPerson(12,"
顺平"
//给予不同的初始值,调用的构造方法不同,构造方法虽同名,但系统会根据初始值来选定构造方法。
//定义一个人类
classPerson{
//默认构造方法
publicPerson(){
//构造方法的主要用处是:
初始化你的成员属性(变量)
//构造方法
publicPerson(intage,Stringname){
我是构造1"
age=age;
name=name;
//构造方法2
publicPerson(Stringname){
我是构造2"
类的默认构造方法
有些同志可能会问?
亲爱的老师,我们在没有学习构造函数前不是也可以创建对象吗?
是这样的,如果程序员没有定义构造方法,系统会自动生成一个默认构造方法。
比如Person类Person(){};
当创建一个Person对象时Personper1=newPerson();
默认的构造函数就会被自动调用。
类的构造方法小结:
1、构造方法名和类名相同;
2、构造方法没有返回值;
3、主要作用是完成对新对象的初始化;
4、在创建新对象时,系统自动的调用该类的构造方法;
5、一个类可以有多个构造方法;
6、每个类都有一个默认的构造方法。
类定义的改进
在提出构造方法后,我们类的定义就应该更加完善了:
class类名{class类名{class类名{
成员变量;
}→成员方法;
→构造方法;
→待定..
}成员方法
}
java面向对象编程
(2)--this
请大家看一段代码:
(Demo112.java)
*重点*:
this是属于一个对象,不属于类的。
java虚拟机会给每个对象分配this,代表当前对象。
坦白的讲,要明白this不是件容易的事
注意事项:
this不能在类定义的外部使用,只能在类定义的方法中使用
/*
this的必要性
*/
publicclassDemo112{
Dogdog1=newDog(2,"
大黄"
Personp1=newPerson(dog1,23,"
郭德纲"
Personp2=newPerson(dog1,24,"
刘谦"
p1.showInfo();
p1.dog.showInfo();
//成员变量
Dogdog;
//引用类型
publicPerson(Dogdog,intage,Stringname){
//可读性不好
//age=age;
//name=name;
this.age=age;
//this.age指this代词指定是成员变量age
this.name=name;
//this.name指this代词指定是成员变量name
this.dog=dog;
//显示人名字
publicvoidshowInfo(){
人名是:
+this.name);
classDog{
publicDog(intage,Stringname){
//显示狗名
狗名叫"
类变量--提出问题?
提出问题的主要目的就是让大家思考解决之道。
publicclassDemo113{
/*inttotal=0;
Childch1=newChild(3,"
妞妞"
ch1.joinGame();
total++;
Childch2=newChild(4,"
小小"
ch2.joinGame();
*/
Ch