java面向对象1

来源:互联网 发布:青岛php培训学校 编辑:程序博客网 时间:2024/05/16 02:34

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

面向对象与面向过程

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

面向对象:将功能封装进对象,强调具备了功能的对象。它是基于面向过程的。

面向对象的三大特征:封装,继承,多态。

类和对象的关系

:对现实生活中的事物的描述。

对象:就是这类事物,实实在在存在的个体。对象包括成员变量(属性)和成员方法(功能)。

成员变量和局部变量

作用范围

成员变量作用与整个类中,

局部变量作用于函数或语句中。

在内存中的位置

成员变量:在堆内存中,因为对象的存在,才在内存中存在。

局部变量:存在与栈内存中。

匿名对象

使用方式一:对对象的方法只调用一次时,可以用匿名对象来完成,这样写比较简化。

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

封装Encapsulation):

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

好处:将变化隔离。

便于使用。

提高重用性。

提高安全性

封装原则

将不需要对外提供的内容都隐藏起来。

把属性都隐藏,提供公共方法对其访问。

私有仅仅是封装的一种表现形式。

之所以对外提供私有成员的访问方式,就是因为可以再访问方式中加入逻辑判断语句对访问的数据进行操作,提高代码的健壮性。

说明:成员变量可以不赋初值,而参与运算,因为它是存在于堆内存中的。而局部变量不赋初值是不能参与运算的,因为它在栈内存中创建

构造函数特点

1.       函数名与类名相同

2.       不用定义返回值类型

3.       对象一建立就会调用与之相对应的构造函数。且一个对象只调用一次

作用:给对象进行初始化

说明:多个构造函数是以重载的形式存在的,当在类中自定义了构造函数后,默认的构造函数就不存在了。

构造代码块:(在类中既不是属性也不是方法的语句块)

作用:给对象进行初始化。

对象一建立就运行,而且优先于构造函数执行。每个对象只运行一次;

和构造函数的区别

构造代码块是给所有建立的对象进行统一初始化,(构造代码块中定义的是不同对象共性的初始化内容),它不同于静态代码块存在于类中,不能在构造代码块中定义变量;

而构造函数是给对应的对象初始化。

this关键字

1.      用于区分局部变量成员变量同名的情况

2.      用于构造函数间调用。这是称为this语句。

注意:构造函数间的调用,this语句只能放在构造函数的第一行。

实例:

1.关于java静态语句块,语句块,构造函数的执行顺序:部分参考自:http://www.csdnjava.com/thread-34010-1-1.html

请写出下面程序的执行结果

执行结果如下:

分析:对象的初始化顺序:首先执行父类静态的内容,父类静态的内容执行完毕后,接着往执行子类的静态的内容,当子类的静态内容执行完毕之后,再往看父类有没有非静态代码块,假如有就执行父类的非静态代码块,父类的非静态代码块执行完毕,接着执行父类的构造方法;父类的构造方法执行完毕之后,它接着往看子类有没有非静态代码块,假如有就执行子类的非静态代码块。子类的非静态代码块执行完毕再往执行子类的构造方法。总之一句话,静态代码块内容先执行,接着执行父类非静态代码块和构造方法,然后执行子类非静态代码块和构造方法。
而且子类的构造方法,不管这个构造方法带不带参数,默认的它都会先往寻找父类的不带参数的构造方法。假如父类没有不带参数的构造方法,那么子类必须用supper关键子来调用父类带参数的构造方法,否则编译不能通过。

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

详情请查看:http://edu.csdn.net/heima

原创粉丝点击