黑马程序员_java面向对象总结【1】(面向对象概述)
2013-12-20 16:23
309 查看
--------------android培训、java培训、期待与您交流!
--------------
面向对象概述(理解面向对象,面向对象的特点,面向对象的特征,面向对象举例,面向对象开发和设计)
面向对象【类】(类与对象的关系,匿名对象的应用,成员变量和成员函数,局部变量,this、static关键字)
面向对象【类的构造】(构造函数,构造代码块)
一、面向对象概述
1、理解面向对象
(1)面向对象是相对面向过程而言的。
(2)面向对象和面向过程都是一种思想。
(3)面向过程强调的是功能行为;面向对象将功能封装进对象,强调具备了功能的对象。
(4)面向对象是基于面向过程的。
(5)万物皆对象。
例:针对冰箱的打开、存储和关闭
面向过程强调动作:打开冰箱、存储进冰箱、关闭冰箱
面向对象强调对象:冰箱.打开、冰箱.存储、冰箱.关闭(一个对象之中所含有的功能)
2、面向对象的特点
(1)是一种符合人们思考习惯的思想
(2)可以将复杂的事情简单化
(3)将程序员从执行者转换成了指挥者
(4)完成需求时:
先要去找具有所需的功能的对象来用。
如果该对象不存在,那么创建一个具有所需功能的对象。
这样简化开发并提高复用。
3、面向对象的特征
(1)封装(encapsulation)
将对象的属性和行为进行封装,其载体为类,类中的东西不需要被使用的人知道,也就是对用户隐藏内部细节,只需要对外提供使用就可以,这就是封装的思想。
封装原则:
将不需要对外提供的内容都隐藏起来。
把属性都隐藏,对外提供访问方法。
例子:电脑主机。其内部的硬件细节不需要被用户知道,只向外提供借口的使用方法,也就是说电脑主机内部对用户是透明的,用户直接可以拿来用。
函数就是Java语言中最小的封装体。
封装的好处:提高安全性、提高重用性、将变化隔离、便于使用
private:私有权限修饰符,用于修饰类中成员;私有内容只在本类中有效。
注意:私有仅仅是封装的一种表现形式。
(2)继承(inheritance)
类与类之间有关系,如鸽子和鸟,类之间的这种关系叫做关联。当处理一个问题时,可以将一些有用的类保留下来,在遇到同样问题时复用。若实现一个信鸽的功能,信鸽是鸽子,鸽子属于鸟,我们可以添加信鸽特有的属性和行为,由于鸽子保留了鸟的属性和行为,这样我们就可以把鸟类拿来复用,让信鸽继承鸟,这就节省了大量的代码量,同时这也是继承的基本思想。
(3)多态(polymorphism)
多态首先是建立在继承的基础上的,先有继承才有多态。
多态是指不同的子类在继承父类后分别都重写覆盖了父类的方法,父类的一个方法在继承的子类中表现出不同的形式。
例:
有两款手机,一款能上网,另一款能防水,这两款手机就是手机这个父类的多态,都是手机,但有不同的表现形式。
4、面向对象举例
(1)去买电脑,我不了解买电脑的具体方法,而毕老师会,则我把毕老师作为对象,调用他的买电脑的方法,即可实现买电脑,这便是一个面向对象的例子。
(2)去饭店吃饭,顾客不需要了解其中的饭的做法,只需要调用对象的功能实现即可。
5、面向对象开发和设计
开发的过程:其实就是不断的创建对象,使用对象,指挥对象做事情。
设计的过程:其实就是在管理和维护对象之间的关系。
二、面向对象(类)
1、类与对象的关系
(1)类是同一类事物的统称,将现实世界中的一个事物抽象为对象,类就是这类对象的统称。
例如:人类、植物类、鸟类。
(2)对象就是符合某个类的定义所产生出来的实例,可以说类是事物的抽象称呼,而对象则是事物的对应实体。
例如:人类是人这个事物的抽象称呼,张三这个对象则是人这个事物的对应实体。
(3)类中对象的行为是以方法的形式定义的,对象的属性是以成员变量的形式定义的,而类包括对象的属性和方法,即类是封装对象的属性和行为的载体。
(4)java中,用来描述事物的就是类(class),对象则是类在堆内存中用new关键字建立的实体。
这里汽车图纸可以看作是类,汽车则是汽车图纸这个类在堆内存里建造的实体。
2、匿名对象的应用
(1)匿名对象是对象的简化形式
(2)匿名对象两种使用情况
当对对象方法仅进行一次调用的时
匿名对象可以作为实际参数进行传递
(3)若对一个对象进行多个成员调用,则这个对象不能为匿名对象,必须要有名字。
3、成员变量和成员函数
事物属性对应类中变量,事物行为对应类中函数,事物的属性和行为共同成为类的成员变量和成员函数
(1)成员变量是对象的属性。
成员变量定义在类中,在整个类中都可以被访问。
成员变量随着对象的建立而建立,存在于对象所在的堆内存中。
成员变量有默认初始化值。
(2)成员函数是对象的行为。
成员函数可以有参数,这个参数可以是对象,也可以是基本数据类型的变量。
成员函数可以有返回值也可以没有,返回值可以是计算结果也可以使其他想要的数值和对象。
在成员函数中可以调用其他成员函数和类成员变量。
4、局部变量
(1)局部变量只定义在局部范围内,如:函数内,语句内等。
(2)局部变量存在于栈内存中。
(3)作用的范围结束,变量空间会自动释放。
(4)局部变量没有默认初始化值。
5、this关键字
this关键字
表面this看上去是用于区分成员变量和局部变量的同名情况。
特点:this代表其所在函数所属对象的引用。即this代表本类对象的引用。简单说,哪个对象在调用this所在的函数,this就代表哪个对象。
this应用:
什么时候使用this关键字呢?
当函数内需要用到调用该函数的对象时,就用this来表示这个对象。即但凡本类功能内部使用到了本类对象,就都用this表示。
需求:汽车类的构造函数中运用this来赋值。
this语句:用于构造函数间互相调用。this();
this语句只能定义在构造函数的第一行。因为初始化要先执行。
三、面向对象(类的构造)
1、构造函数
什么时候定义构造函数?
当分析事物时,该事物一存在就具备一些特性或行为,则将这些内容定义在构造函数中。
构造函数的时候如果需要有未知内容参与运算,那么就定义参数,否则不定义参数。
特点:
(1)函数名与类名相同
(2)不用定义返回值类型
(3)不可以写return语句
作用:给对象进行初始化。
注意:
(1).默认构造函数的特点。当类中没有定义构造函数时,系统会给其定义一个空参数的构造函数。当自己定义了构造函数后,系统的默认构造函数就没有了。
(2)多个构造函数是以重载的形式存在的。
(3)构造函数是对象一建立就运行,给对象初始化;而一般函数是对象调用才执行,给对象添加对象所具备的功能。一个对象建立,构造函数只运行一次,而一般函数可以多次调用。
2、构造代码块
作用:给对象进行初始化。
对象一建立就运行,而且优先于构造函数执行。
和构造函数区别:
构造代码块是给所有对象进行统一初始化,而构造函数是给对应的对象初始化。
构造代码块中定义的是不同对象共性的初始化内容。
3、构造函数和构造代码块示例
--------------
面向对象概述(理解面向对象,面向对象的特点,面向对象的特征,面向对象举例,面向对象开发和设计)
面向对象【类】(类与对象的关系,匿名对象的应用,成员变量和成员函数,局部变量,this、static关键字)
面向对象【类的构造】(构造函数,构造代码块)
一、面向对象概述
1、理解面向对象
(1)面向对象是相对面向过程而言的。
(2)面向对象和面向过程都是一种思想。
(3)面向过程强调的是功能行为;面向对象将功能封装进对象,强调具备了功能的对象。
(4)面向对象是基于面向过程的。
(5)万物皆对象。
例:针对冰箱的打开、存储和关闭
面向过程强调动作:打开冰箱、存储进冰箱、关闭冰箱
面向对象强调对象:冰箱.打开、冰箱.存储、冰箱.关闭(一个对象之中所含有的功能)
2、面向对象的特点
(1)是一种符合人们思考习惯的思想
(2)可以将复杂的事情简单化
(3)将程序员从执行者转换成了指挥者
(4)完成需求时:
先要去找具有所需的功能的对象来用。
如果该对象不存在,那么创建一个具有所需功能的对象。
这样简化开发并提高复用。
3、面向对象的特征
(1)封装(encapsulation)
将对象的属性和行为进行封装,其载体为类,类中的东西不需要被使用的人知道,也就是对用户隐藏内部细节,只需要对外提供使用就可以,这就是封装的思想。
封装原则:
将不需要对外提供的内容都隐藏起来。
把属性都隐藏,对外提供访问方法。
例子:电脑主机。其内部的硬件细节不需要被用户知道,只向外提供借口的使用方法,也就是说电脑主机内部对用户是透明的,用户直接可以拿来用。
函数就是Java语言中最小的封装体。
封装的好处:提高安全性、提高重用性、将变化隔离、便于使用
private:私有权限修饰符,用于修饰类中成员;私有内容只在本类中有效。
注意:私有仅仅是封装的一种表现形式。
(2)继承(inheritance)
类与类之间有关系,如鸽子和鸟,类之间的这种关系叫做关联。当处理一个问题时,可以将一些有用的类保留下来,在遇到同样问题时复用。若实现一个信鸽的功能,信鸽是鸽子,鸽子属于鸟,我们可以添加信鸽特有的属性和行为,由于鸽子保留了鸟的属性和行为,这样我们就可以把鸟类拿来复用,让信鸽继承鸟,这就节省了大量的代码量,同时这也是继承的基本思想。
(3)多态(polymorphism)
多态首先是建立在继承的基础上的,先有继承才有多态。
多态是指不同的子类在继承父类后分别都重写覆盖了父类的方法,父类的一个方法在继承的子类中表现出不同的形式。
例:
有两款手机,一款能上网,另一款能防水,这两款手机就是手机这个父类的多态,都是手机,但有不同的表现形式。
4、面向对象举例
(1)去买电脑,我不了解买电脑的具体方法,而毕老师会,则我把毕老师作为对象,调用他的买电脑的方法,即可实现买电脑,这便是一个面向对象的例子。
public class buypc { public static void main(String[] args) { //建立毕老师的对象,并调用对象的方法 bilaoshi b=new bilaoshi(); b.chaxun(); b.zixun(); b.kanjia(); System.out.println("付钱,购买电脑成功!"); } } class bilaoshi{ void chaxun(){ System.out.println("毕老师查询电脑资料"); } void zixun(){ System.out.println("毕老师咨询电脑情况"); } void kanjia(){ System.out.println("毕老师与商家砍价"); } }
(2)去饭店吃饭,顾客不需要了解其中的饭的做法,只需要调用对象的功能实现即可。
public class eat { public static void main(String[] args) { hotel h=new hotel(); h.eat(); } } class hotel{ void eat(){ System.out.println("顾客到达饭店,叫服务员点菜"); waiter w=new waiter(); w.order(); } } class waiter{ void order(){ System.out.println("服务员写菜单,将菜单递给厨师"); cooker c=new cooker(); c.cook(); } void take(){ System.out.println("服务员将菜端上桌,顾客开始吃饭"); } } class cooker{ void cook(){ System.out.println("厨师收到菜单,开始做饭"); waiter w=new waiter(); w.take(); } }
5、面向对象开发和设计
开发的过程:其实就是不断的创建对象,使用对象,指挥对象做事情。
设计的过程:其实就是在管理和维护对象之间的关系。
二、面向对象(类)
1、类与对象的关系
(1)类是同一类事物的统称,将现实世界中的一个事物抽象为对象,类就是这类对象的统称。
例如:人类、植物类、鸟类。
(2)对象就是符合某个类的定义所产生出来的实例,可以说类是事物的抽象称呼,而对象则是事物的对应实体。
例如:人类是人这个事物的抽象称呼,张三这个对象则是人这个事物的对应实体。
(3)类中对象的行为是以方法的形式定义的,对象的属性是以成员变量的形式定义的,而类包括对象的属性和方法,即类是封装对象的属性和行为的载体。
(4)java中,用来描述事物的就是类(class),对象则是类在堆内存中用new关键字建立的实体。
这里汽车图纸可以看作是类,汽车则是汽车图纸这个类在堆内存里建造的实体。
public class CarDemo{ public static void main(String[] args) { Car c=new Car();//对象c就是CarDemo类在堆内存中建立的实体。 c.run(); } } class Car{ String color="黑色"; int num=4; void run(){ System.out.println(color+"汽车..."+num+"个轮胎行驶"); } }
2、匿名对象的应用
(1)匿名对象是对象的简化形式
(2)匿名对象两种使用情况
当对对象方法仅进行一次调用的时
匿名对象可以作为实际参数进行传递
(3)若对一个对象进行多个成员调用,则这个对象不能为匿名对象,必须要有名字。
public class CarDemo { public static void main(String[] args) { Car c=new Car(); //非匿名对象可以多次调用。 c.setColor("银色"); c.setNum(6); c.run(); new Car().run();//当对象仅一次调用可以用匿名对象 } } class Car{ String color="黑色"; int num=4; void run(){ System.out.println(color+"汽车..."+num+"个轮胎行驶"); } void setColor(String color){ this.color=color; } void setNum(int num){ this.num=num; } }
3、成员变量和成员函数
事物属性对应类中变量,事物行为对应类中函数,事物的属性和行为共同成为类的成员变量和成员函数
(1)成员变量是对象的属性。
成员变量定义在类中,在整个类中都可以被访问。
成员变量随着对象的建立而建立,存在于对象所在的堆内存中。
成员变量有默认初始化值。
(2)成员函数是对象的行为。
成员函数可以有参数,这个参数可以是对象,也可以是基本数据类型的变量。
成员函数可以有返回值也可以没有,返回值可以是计算结果也可以使其他想要的数值和对象。
在成员函数中可以调用其他成员函数和类成员变量。
4、局部变量
(1)局部变量只定义在局部范围内,如:函数内,语句内等。
(2)局部变量存在于栈内存中。
(3)作用的范围结束,变量空间会自动释放。
(4)局部变量没有默认初始化值。
5、this关键字
this关键字
表面this看上去是用于区分成员变量和局部变量的同名情况。
特点:this代表其所在函数所属对象的引用。即this代表本类对象的引用。简单说,哪个对象在调用this所在的函数,this就代表哪个对象。
this应用:
什么时候使用this关键字呢?
当函数内需要用到调用该函数的对象时,就用this来表示这个对象。即但凡本类功能内部使用到了本类对象,就都用this表示。
需求:汽车类的构造函数中运用this来赋值。
class Car{ private String color="黑色"; private String name="奔驰"; private int num=4; Car(){ //System.out.println("汽车名:"+name+" 汽车颜色:"+color+" 汽车轮胎数:"+num); } Car(int num){ this.num=num;//左边this.num中的num是类的成员变量,this代表该类对象的引用,右边num是该函数的局部变量。 System.out.println("汽车名:"+name+" 汽车颜色:"+color+" 汽车轮胎数:"+num); } Car(String name,String color){ this.name=name; this.color=color; System.out.println("汽车名:"+name+" 汽车颜色:"+color+" 汽车轮胎数:"+num); } public void setName(String name){ this.name=name; } public String getName(){ return name; } public void setColor(String color){ this.color=color; } public String getColor(){ return color; } public void setNum(int num){ this.num=num; } public int getNum(){ return num; } public void run(){ System.out.println("汽车名:"+name+" 汽车颜色:"+color+" 汽车轮胎数:"+num); } public static void main(String[] args) { Car a=new Car(); Car b=new Car(6); Car c=new Car("宝马", "银色"); c.setName("雪弗莱"); c.setColor("红色"); c.run(); } }
this语句:用于构造函数间互相调用。this();
this语句只能定义在构造函数的第一行。因为初始化要先执行。
class Person{ private String name; private int age; Person(String name){ this.name = name; } Person(String name,int age){ this(name);//this语句调用了Person(name)构造函数 this.age = age; } } class PersonDemo{ public static void main(String[] arge){ Person p = new Person("wangwu",20); } }
三、面向对象(类的构造)
1、构造函数
什么时候定义构造函数?
当分析事物时,该事物一存在就具备一些特性或行为,则将这些内容定义在构造函数中。
构造函数的时候如果需要有未知内容参与运算,那么就定义参数,否则不定义参数。
特点:
(1)函数名与类名相同
(2)不用定义返回值类型
(3)不可以写return语句
作用:给对象进行初始化。
注意:
(1).默认构造函数的特点。当类中没有定义构造函数时,系统会给其定义一个空参数的构造函数。当自己定义了构造函数后,系统的默认构造函数就没有了。
(2)多个构造函数是以重载的形式存在的。
(3)构造函数是对象一建立就运行,给对象初始化;而一般函数是对象调用才执行,给对象添加对象所具备的功能。一个对象建立,构造函数只运行一次,而一般函数可以多次调用。
2、构造代码块
作用:给对象进行初始化。
对象一建立就运行,而且优先于构造函数执行。
和构造函数区别:
构造代码块是给所有对象进行统一初始化,而构造函数是给对应的对象初始化。
构造代码块中定义的是不同对象共性的初始化内容。
3、构造函数和构造代码块示例
class Car{ private String color="黑色"; private String name="奔驰"; private int num=4; //构造代码块,定义的是不同对象共性的初始化内容。 { System.out.println("生产汽车"); } //构造函数 Car(int num){ this.num=num; System.out.println("汽车名:"+name+" 汽车颜色:"+color+" 汽车轮胎数:"+num); } Car(String name,String color){ this.name=name; this.color=color; System.out.println("汽车名:"+name+" 汽车颜色:"+color+" 汽车轮胎数:"+num); } public void setName(String name){ this.name=name; } public String getName(){ return name; } public void setColor(String color){ this.color=color; } public String getColor(){ return color; } public void setNum(int num){ this.num=num; } public int getNum(){ return num; } public void run(){ System.out.println("汽车名:"+name+" 汽车颜色:"+color+" 汽车轮胎数:"+num); } public static void main(String[] args) { Car a=new Car(6); Car b=new Car("宝马", "银色"); b.setName("雪弗莱"); b.setColor("红色"); b.run(); } }
相关文章推荐
- 程序员面试题精选100题(20)-最长公共子串[算法]
- 黑马程序员 01 初识Java
- 黑马程序员-神奇的标志位“Bool flag=false”
- 面试 自我介绍很重要 主要看你的表达能力
- 黑马程序员_交通灯管理系统
- 黑马程序员——语句、函数和数组
- 不和程序员谈技术
- 黑马程序员之Java基础加强之类加载器
- 黑马程序员 StringBuffer类和包装类
- Java面试笔试题大汇总
- 程序员的爱情表白
- 说说程序员 "必备能力"
- 说说程序员"必备技术"
- 不会UML的程序员不是好构架师?
- 【算法之道】之字符串逆序输出
- 程序员的自我修养(序)-量子
- 面试总结
- 最牛B的编码套路
- 老码农教你学英语:补充一些英语学习素材
- 关于程序员的59条搞笑但却真实无比的编程语录