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

黑马程序员_面向对象(1)

2014-10-28 14:09 49 查看
------- android培训java培训、期待与您交流! ----------

final 最终,修饰符

abstract 修饰类为抽象类
class 定义类

interface 定义接口

static 修饰类为静态

this 本类对象

super 父类对象

==================
1).面向对象

面向对象特点:它是一种思想,能让复杂问题简单化,角色转换,从执行者转换为指挥者

为了让问题简单化,需找一个对象,能描述的事物,就有对象。

类:对现一类事物的描述。

对象:就是这类事物的实例

类的属性,类的行为。

==================
2).用class定义类

定义一个类,就是描述一个类。 

类的属性,行为就是成员变量和方法。

描述汽车:

属性:颜色,车轮

行为:跑

class Car{
String color = "white";
int num = 4;
void run(){
System.out.println("run");
}
}

Car c = new Car();生产汽车。c就是一个名称。类类型变量。指向对象。

栈内存:存放引用。地址值。

堆内存:存放对象,成员。

new  在内存中产生一个新对象

==================

3).成员变量和局部变量。

class Test{
int num = 20;//成员变量
for(int i =0; i<4; i++){//局部变量
System.out.println(i);
}
}


它们的作用范围不同。在内存中的位置不同。

成员变量:在堆内存中,因为对象 的存在,才在内存中存在。作用于整个类。

局部变量:在栈内存中,作用于局部

==================

4).匿名对象

1.匿名对象只使用一次

2.调用匿名方法有意义,调用匿名属性没有意义。

匿名对象两种使用情况:
1.当对象方法只进行一次调用的时候使用匿名对象可以简化书写。new Car().run();

2.匿名对象可以作为实际参数进行传递。show(new Car());

==================

5).构造函数

特点:

1.函数名与类名相同

2.不用定义返回值类型

3.不可以写return语句

作用:

给对象进行初始化。*对象一建立,就调用对应的构造函数*。

注意:

1.默认构造函数的特点。

2.多个构造函数是以重载的形式存在的。

3.当一个类中没有定义构造函数时,那么系统会默认给该类加入一个空参数的构造函数Person(){}

4.当类中自定义了构造函数后,默认的构造函数就没有了。
构造函数和一般函数:

1.写法上和运行上都不同。

2.对象一建立构造函数就运行,给对象初始化。

3.一般方法是对象调用才执行,是给对象添加对象具备的功能。

4.对象建立后,构造函数只运行一次。一般函数可以被对象调用多次
什么时候定义构造函数?

分析事物时,事物具有一些特性或者行为,那么这些特性或行为定义在构造函数中

==================

6).构造代码块

格式:
{
//定义的是不同对象共性的初始化内容
}


作用:

1.给对象进行初始化。

2.对象一建立就运行,而且优先于构造函数执行。

和构造函数的区别:

1.构造代码块是给所有对象初始化。

2.构造函数是给对应的对象初始化。
静态代码块。

1.格式:
static {
静态代码块中的执行语句。
}

2.特点:随着类的加载而执行,只执行一次,并优先于主函数。

3.用于给类进行初始化的。

==================

7).this和super
this代表的是本类对象的引用。

super代表的是父类对象的引用。

super的使用和this的使用几乎一致。

如果子类中出现非私有的同名成员变量时,

子类要访问本类中的变量,用this

子类要访问父类中的同名变量,用super。

==================

8).子父类中的构造函数

1.子类对象进行初始化时,父类的构造函数也会运行,

2.子类的构造函数默认第一行有一条隐式的语句 super();

3.super():会访问父类中空参数的构造函数。

4.子类所有的构造函数默认第一行都是super();

为什么子类一定要访问父类中的构造函数。

1.子类可以直接获取父类数据。所以建立子类对象时,先看父类如何进行数据初始化的。

2.所以子类对象初始化时,要先访问父类中的构造函数。

3.通过手动定义super语句的方式,来访问父类中指定的构造函数

子类的实例化过程。

1.子类的所有构造函数,默认都会访问父类中无参构造函数。因为其中有隐式super()

2.父类中没有无参构造函数,子类必须手动通过super语句,指定要访问的父类构造函数。

3.子类至少有一个构造函数会访问父类中的构造函数。

==================
9).final : 最终。是一个修饰符.

1.可以修饰类,函数,变量。

2.final修饰的类不能被继承。为了避免子类继承,复写功能。

3.final修饰的方法不能被复写。

4.final修饰的变量是一个常量只能赋值一次,既可以修饰成员变量,又可以修饰局部变量。

有数据的值是固定的,为了增强阅读性,都给这些值起个名字。方便于阅读。 

用final修饰这个值,作为常量:常量的书写规范所有字母都大写,如果由多个单词组成。

单词间通过_连接。如:MAX_VALUE

5,内部类定义在类中的局部位置上时,只能访问该局部被final修饰的局部变量。

==================

10).static:是一个修饰符,用于修饰成员(成员变量,成员函数)。

static特点:

1.随着类的加载而加载。静态会随着类的消失而消失。生命周期最长

2.优先于的对象存在

3.被所有对象所共享

4.可以直接被类名所调用。

静态成员的调用方式:

1.被对象调用外,

2.直接被类名调用(类名.静态成员)。

实例变量和类变量的区别:

1.存放位置:

类变量随着类的加载而存在于方法区中。

实例变量随着对象的建立而存在于堆内存中。

2.生命周期:

类变量生命周期最长,随着类的消失而消失。

实例变量生命周期随着对象的消失而消失。

使用静态注意:

1.静态方法只能访问静态成员,非静态方法既可以访问静态也可以访问非静态。

2.静态方法中不能定义this,super关键字。因为静态是优先于对象存在。

3.主函数是静态的。

静态利与弊:

好处:

1.将对象的共享数据进行单独空间的存储,节省空间。没有必要每一个对象中都存储一份。

2.可以直接被类名调用。
弊端:

1.生命周期过长。

2.访问出现局限性。(静态只能访问静态)

何时使用静态:

1.什么时候定义静态变量(类变量)呢?

答:当对象中出现共享数据时,该数据被静态所修饰。

对象中的特有数据要定义成非静态存在于堆内存中。

2.什么时候定义静态函数呢?

答:当函数内部没有访问到非静态数据(对象的特有数据),

静态访问一个数据,则该数据必须定义为静态。

而对象特有数据是非静态的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: