黑马程序员---面向对象【java】

来源:互联网 发布:linux 常用服务端口 编辑:程序博客网 时间:2024/06/10 09:48

------- android培训java培训、期待与您交流! ----------

面向对象

面向过程:强调的是功能行为。

面向对象:将功能封装进对象,强调具备了功能的对象。

类与对象的关系

类就是对现实生活中事物的描述。

对象即是该类事物实实在在存在的个体。

Java中用类class来描述事物。

属性:对应类中的成员变量。

行为:对应类中的成员函数。

成员变量随着对象的建立而建立,存在于对象所在的堆内存中。成员变量有默认初始化值。

局部变量存在于栈内存中。局部变量没有默认初始化值。

匿名对象:

当对对象方法仅进行一次调用时

匿名对象可以作为实际参数进行传递

封装:是指隐藏对象的属性和实现细节,仅对外提供 公共访问方式。

private

用于修饰成员(成员变量和成员函数)。
被私有化的成员只在本类中有效。
开发中通常将成员变量私有化,再对外提供对应的set ,get 方法对其进行访问,以提高对数据访问的安全性。

构造函数

函数名与类名相同。
不用定义返回值类型。与void不同,void也是一种返回类型。
不可以写return语句。
构造函数的作用:对象一建立就会调用与之对应的构造函数。构造函数用于给对象进行初始化。

构造代码块

构造代码块中定义的是不同对象共性的初始化内容,是给所有对象进行统一初始化。而构造函数是给对应的对象进行初始化。

this代表其所在函数所属对象的引用。

当在函数内需要用到调用该函数的对象时,就用this。例如用于区分同名的成员变量和局部变量。

this语句可以用于构造函数之间的相互调用。this语句只能定义在构造函数的第一行,即先进行this语句的初始化。

static(静态)关键字

static只能修饰成员(成员变量,成员方法),不能修饰局部变量。

当成员被static修饰后,就多了一个调用方式,除了可以被对象调用外,还可以直接被类名调用:类名.静态成员

静态成员存放在内存的方法区中。

静态方法只能访问静态成员。
非静态方法既可以访问静态成员也可以访问非静态成员。
静态方法中不可以写this,super关键字。因为静态优先于对象存在。

如果在定义一个类的时候,发现一个成员变量需要被所有实例所共享,那么这个成员变量就需要定义为static的。

对象的初始化过程

类文件加载->执行类的静态代码块->开辟内存空间建立对象->非静态属性默认初始化->非静态属性显示初始化->执行构造代码块->构造函数初始化->将内存地址赋给栈内存中的变量

继承

在程序中,可以使用extends关键字可以让一个类继承另外一个类。

this代表本类对象的引用。super代表父类对象的引用。

子类可以直接访问父类中的非私有的属性和行为。

final关键字

final可以修饰类,方法,变量(成员变量、局部变量)。
final修饰的类不可以被继承。
继承的出现打破了封装性,为了避免被子类覆写功能,可以用final修饰该类。

final修饰的方法不可以被覆盖。
如果类中的部分类不希望被覆盖,可以单独将这些方法被final修饰。

通常定义常量时,使用public static final功能标记该常量,这样常量就成了全局的常量。

抽象类

包含抽象方法的类就是抽象类。

多个对象都具备相同的功能,但是功能具体内容有所不同,那么在抽取过程中,只抽取了功能定义,并未抽取功能主体,那么只有功 能声明,没有功能主体的方法称为抽象方法。

模板设计模式

描述:在定义功能时,功能的一部分是确定的,但是有一部分是不确定的,而确定的部分在使用不确定的部分,那么这时就将不确定的部分暴露出去,由该类的子类去完成。

定义一个抽象的父类做为模板,定义所有需要的方法。
在父类中实现供外界调用的主方法,将方法声明为final。
根据不同业务需求定义子类实现父类的抽象方法。

接口

接口是一种特殊的抽象类,接口中声明的所有方法都是抽象的。

接口不可以创建对象,因为有抽象方法。只有子类实现该接口,且对接口中的方法全部覆盖后,子类才可以实例化。否则子类是一个抽象类。

多态

父类或者接口的引用指向或者接收自己的子类对象。

多态的前提:需要存在继承或者实现关系。要有覆盖操作。

非静态成员函数:成员函数在多态调用时,编译看左边,运行看右边。

静态成员函数:无论编译和运行,都参考左边。

成员变量:无论编译和运行,都参考左边(引用变量所属的类)。

Object类

Object类是所有对象的直接或者间接父类。

equals方法:Object类中已经提供了对象是否相同的比较方法。如果自定义类中也要比较相同的同能,只要覆盖Object中的equals方法,建立自己特有的比较内容即可。

toString方法:toString()方法返回的是对象的字符串表示。所有的类都可以覆盖Object类的toString()方法实现自己的显示功能。

内部类

将一个类定义在另一个类的里面,对里面那个 类就称为内部类。

内部类可以直接访问外部类中的成员,包括私有成员。
之所以可以直接访问外部类中的成员,是因为内部类中持有一个对外部类的引用,格式为:外部类名.this

外部类要访问内部类中的成员必须要建立内部类的对象。
其它外部类直接访问非私有内部类成员的方法:外部类名.内部类名 变量名 = 外部类对象.内部类对象

匿名内部类

内部类必须继承或实现一个外部类或者接口。

new 外部类名或者接口名(){
覆盖类或者接口中的代码
}

 

原创粉丝点击