您的位置:首页 > 职场人生

【黑马程序员】面向对象(一) 第五天

2013-03-11 02:12 281 查看


------- android培训java培训、java学习型技术博客、期待与您交流!
----------

知识点

面向对象是一种对现实世界理解和抽象的方法

通过面向对象的方式,将现实世界的物抽象成对象,现实世界中的关系抽象成类、继承,帮助人们实现对现实世界的抽象与数字建模。通过面向对象的方法,更利于人理解的方式对于复杂系统的进行分析、设计与编程。同时,面向对象能有效提高编程的效率,通过封装技术,消息机制可以像搭积木的一样快速开发出一个全新的系统。
面向对象能让复杂的变成简单的,能让执行者变成指挥者

01)面向对象(概述)

三个特征:封装多态



02)举例

一切皆对象,万物皆对象。
例:某某人的车坏了,就去找个会修车的人修车,而会修车的这个人就具备了修车的这个功能,而某某就是在使用这个对象。

03)类和对象的关系

对象是类的实例。可以使用new操作符创建对象,使用
运算符(.)通过对象的引用变量来访问该对象的成员。

类:就是对现实生活中事物的描述。
对象:就是这类事物,实实在在的个体。





public class CarDemo {
public static void main(String[] args) {
Car c = new Car();//c就是一个类类型变量
c.time = "改变前";
c.run();//改变前。
c.color = "蓝色";//将已有车的颜色改成蓝色
c.num = 100;//修改车的轮胎数。
c.time = "改变后";
c.run();//改变后。
}
}
class Car{
String color = "红色";//描述颜色。
int num = 4;//描述轮胎数。
String time =null;
void run(){//运行行为
System.out.println(time + " 这辆车的颜色是" + color + "的, 有" + num + "个轮胎。");
}
}


运行结果如下图所示:



04)成员变量和局部变量

作用范围:成员变量作用于整个类中。局部变量作用于函数中,或语句中。
在内存中的位置:成员变量,在内存中,因为对象的存在,才在内存中存在。 局部变量,存在内存中。

05)匿名对象的应用

匿名对象使用对象一:当对对象的方法只调用一次时可以用匿名对象来完成,这样写比较简化。如果对一个对象的多个成员进行调用时,必须给这个对象起个名字。
匿名对象使用对象二:可以将匿名对象作为实际参数进行传递。

new Car();//创建匿名对象,运行后在内存中边垃圾,被释放。
new Car().num = 10;//创建匿名对象,并num的值为10。运行后同上。

06)封装



封装:在使用对象时,没有必要知道对象在内部是如何完成功能操作的,只要指挥对象去做,知道结果就可以了。
举例:比如我找比老师买电脑,我就在使用毕老师这个对象。至于比老师如何和销售商砍价,如何与销售商说需求硬件信息,这些细节(被比老师封装,隐藏的)对于我来说都是没必要了解。我只需要付钱,拿到货后就能使用电脑了。
函数本身就是一个最小的封装体。

06)如何进行封装

private:私有,权限修饰符。用于修饰类中的成员(成员变量,成员函数)。
私有只在本类中有效,私有只是封装的一种体现形式。
public class CatEat {
public static void main(String[] args) {
Cat c = new Cat();
c.setName("汤姆");//修改name的值为“汤姆”。
c.setEat("地球");//修改eat的值为“地球”。
c.eat();
}
}
class Cat{
private String name;//被封装,只能在Cat类中使用。
private String eat;//同上。
public void setName(String name){
this.name = name;
}
public String getName(){
return name;
}
public String getEat(){
return eat;
}
public void setEat(String eat){
this.eat = eat;
}
void eat(){
System.out.println(name + "正在啃" + eat + "!");
}
}
运行结果如下图所示:



08)构造函数。







public class CatDemo_3 {
public static void main(String[] args) {
Cat_1 c1 = new Cat_1();//调用无参构造。
Cat_1 c2 = new Cat_1("汤姆");
Cat_1 c3 = new Cat_1("汤姆", "地球");
}
}
class Cat_1{
private String name;//初始值为null。
private String eat;//初始值为null。
Cat_1(){
System.out.print("A: " + name + "在吃" + eat);
eat();
}
Cat_1(String name){
this.name = name;
System.out.print("B: " + name + "在吃" + eat);
eat();
}
Cat_1(String name, String eat){
this.eat = eat;
this.name = name;
System.out.print("C: " + name + "在吃" + eat);
eat();
}
private void eat(){
System.out.print("\t" + name + "说" + eat);
System.out.println("真好吃!");
}
}
运行结果如下图所示:



09)**构造代码块。



public class CatDemo_4 {
public static void main(String[] args) {
Cat_2 c1 = new Cat_2();//调用无参构造。首先运行eat()函数;
Cat_2 c2 = new Cat_2("汤姆");
Cat_2 c3 = new Cat_2("汤姆", "地球");
}
}
class Cat_2{
private String name;//初始值为null。
private String eat;//初始值为null。
{
eat();//构造代码块,只要创建了对象,都是第一个执行。
}
Cat_2(){
System.out.println("A: " + name + "在吃" + eat);
}
Cat_2(String name){
this.name = name;
System.out.println("B: " + name + "在吃" + eat);
}
Cat_2(String name, String eat){
this.eat = eat;
this.name = name;
System.out.println("C: " + name + "在吃" + eat);
}
void eat(){
System.out.println("我总是第一个执行的!");
}
}
运行结果如下图所示:



10)this关键字

this是指向调用对象本身的引用
this给出一种指代对象的方法,这样,可以在实例方法代码中调用实例方法。
this的另一个常用方法是让构造方法调用同一个类的另一个构造方法。



11)this关键字的应用




附言:我是Java新人,如有错误的地方请指出。
每天学习一点点,纠错一点点,进步很大点。


------- android培训java培训、java学习型技术博客、期待与您交流!
----------

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐