码迷,mamicode.com
首页 > 编程语言 > 详细

JavaOOP笔记

时间:2015-05-08 23:43:08      阅读:528      评论:0      收藏:0      [点我收藏+]

标签:

1.面向过程的结构化程序设计
结构化程序的弊端:
1.缺乏对数据的封装
2.数据和方法(对数据的操作)的分离

2.什么是抽象数据类型
所谓的抽象数据类型可以理解为:将不同的数据的集合组成一个整体用来描述一个新的事物。

3.什么是类
类定义了一种抽象类型
类不但定义了抽象类型的组成(成员变量),同时还定义了可以对该类型实施的操作(方法)。

4.定义成员变量
对象创建以后,其成员变量可以按照默认的方式初始化
初始化成员变量时,其默认值的规则如下表所示:
成员变量类型 默认初始化
byte short int long float double 0
boolean flase
char型 /u0000
引用类型 null

5.使用new关键字创建对象
类定义完成之后,可以使用new关键字创建对象,创建对象的过程通常叫做实例化。
new 运算的语法为:
new 类名();

6.方法的签名
方法的签名包含如下两个方面:方法名和参数列表
一个类中,不可以有两个方法的签名完全相同。

7.方法的重载
在Java语言中,允许多个方法的名称相同,但参数列表不同,称之为方法的重载(overload).
编译器在编译时会根据签名来绑定调用不同的方法

8.构造方法语法
构造方法名必须与类型相同
构造方法没有返回值,但也不能写void
构造方法常用于实现对象成员变量的初始化。

9.this关键字的使用
this关键字用在方法体中,用于指向调用该方法的当前对象;简单的说:哪个对象调用方法,this指的就是哪个对象。
严格来讲在方法中需要通过this关键字指明当前对象
一个构造方法可以通过this关键字调用另外一个重载的构造方法。

10.引用类型数组初始化
引用类型数组的默认初始值都是null.
如果希望每一个元素都指向具体的对象,需要针对每一个数组元素进行"new"运算。

11.对象的内存管理
编译好的Java程序需要运行在JVM中。
程序,无论代码还是数据,都需要存储在内存中。JVM为Java程序提供并管理所需要的空间。
JVM内存分为"堆"、"栈"、和"方法区"三个区域,分别用于存储不同的数据

12.对象存储在堆中
JVM在内存空间开辟一个称为“堆”的空间;
用于存储使用new关键字所创建的对象

13.成员变量的生命周期
访问对象需要依靠引用变量
当一个对象没有任何引用的时,被视为废弃的对象,属于被回收的范围。该对象中的所有成员变量也随之被回收。
成员变量的成名周期为:从对象在堆中创建开始到对象从堆中被回收结束。

14.Java程序的内存泄露问题
内存泄露是指,不再使用的内存没有及时的回收。严重的内存泄露会因过多的内存占用而导致程序的崩溃。
GC线程判断对象是否可以回收的依据是该对象是否有引用指向,因此,当确定该对象不再使用时,应该及时将其引用设置为null

15.栈用于存储方法区中的局部变量
JVM在其内存空间开辟了一个称为"栈"的存储空间;
这部分空间用于存储程序运行时在方法中声明的所有局部变量

16.局部变量的生命周期
一个运行的Java程序从开始到结束会有多次方法的调用。JVM会为每一个方法的调用在栈中分配一个对应的空间,
这个空间称为该方法的栈帧。
一个栈帧对应一个正在调用中的方法,栈帧中存储了该方法的参数,局部变量等数据。当某一个方法调用完成后,其对应
的栈帧将被清除,局部变量失效。

17.方法区用于存放类的信息
方法区用于存放类的信息,Java程序运行时,首先会通过类装载器载入类文件的字节码信息,经过解析后将其装入方法区。
类的各种信息(包括方法)都在方法区存储。

18.方法只有一份
当类的信息被加载到方法区,除了类的类型信息以外,同时类内的方法定义也被加载到方法区;
类在实例化对象时,多个对象会拥有各自在堆中的空间,但所有实例对象是共用在方法区中的一份方法定义的。

19.Java语言不支持多重继承,一个类只能继承一个父类,但一个父类可以有多个子类。

20.父类的引用指向子类的对象
一个子类的对象可以向上造型为父类的类型。即定义父类型的引用可以指向子类的对象。
父类型的引用可以指向子类的对象,但通过父类的引用只能访问父类所定义的成员,不能访问子类扩展的部分。

21.方法的重写
子类可以重写(覆盖)继承自父类的方法,即方法名和参数列表与父类的相同;但方法实现不同。
当子类对象的重写方法被调用时(无论是通过子类的引用调用还是通过父类的引用调用),运行的是子类重写后的版本。
子类在重写父类的方法时,可以通过super关键字调用父类的版本

22.static修饰成员变量
用static修饰成员变量不属于对象的数据结构;
static 变量是属于类的变量,通常可以通过类名来引用static成员
static成员变量和类的信息放在一起存储在方法区,而不是在堆中,一个类的static成员变量只有”一份"无论
该类创建了多少对象。

23.static块
static块:属于类的代码块,在类加载期间执行的代码块,只执行一次,可以用来在软件中加载静态资源。

24.final修饰变量
final关键字修饰修饰成员变量,意为不可改变。
final修饰成员变量,两种方式初始化:
声明同时初始化
构造函数中初始化
final关键字也可以修饰局部变量,使用之前初始化即可。

25.final修饰方法
final关键字修饰的方法不可以被重写。
使一个方法不能被重写的意义在于:防止子类在定义新方法时造成的"不经意"重写。

26.final修饰类
final关键字修饰类不可以被继承。
JDK中的一些基础类库被定义为final的,例如:String、Math、Integer、Double等等
使用一个类不能被继承的意义在于:可以保护类不被继承修改,可以控制滥用继承对系统造成危害。

27.static final常量
static final修饰的成员变量称为常量,必须声明同时初始化,不可被改变。
static final 常量会在编译期被替换

28.抽象类和抽象方法
抽象类不可以实例化
即使一个类中没有抽象方法,也可以将其定义为抽象类,同样,该类不可以实例化
abstract和final关键字不可以同时修饰一个类,因为final关键字使得类不能被继承,而abstract修饰的类
如果不被继承将没有任何意义。

29.继承抽象类
一个类继承抽象类后,必须重写其抽象方法,不同的子类可以有不同的实现。

30.抽象类的意义
抽象类的意义在于:
为其子类提供一个公共的类型;
封装子类中的重要内容(成员变量和方法)
定义有抽象方法,子类虽然有不同的实现,但方法的定义是一致的。

31.接口可以看成是特殊的抽象类,即只包含有抽象方法的抽象类;

32.多态的意义
一个类型的引用在指向不同的对象时会有不同的实现。
同样一个对象,造型成不同的类型时,会有不同的功能。

33.向上造型
一个类的对象可以向上造型的类型有:
父类的类型
其实现的接口类型
Java编译器会根据类型检查调用方法是否匹配

34.强制转型
可以通过强制转换将父类型变量转换为子类型变量,前提是该变量指向的对象确实是该子类类型
也可以通过类型转换将变量转换为某种接口类型,前提是该变量指向的对象确实实现了该接口
如果在强制转换过程中出现违背上述两个前提,将会抛出ClassCastException

35.定义成员内部类
一个类可以定义在另外一个类的内部,定义在类内部的类称之为Inner,其所在的类称之为Outer;
Inner定义在Outer的内部,通常只服务于Outer,对外部不具备可见性,Inner可以直接调用Outer的成员及方法(包括私有的)。

36.创建内部类对象
一般情况下,Inner对象会在Outer对象中创建(构造方法或其他方法);Inner对象中会有一个隐式的引用指向
创建它的Outer类对象。

37.定义匿名内部类
如果在一段程序中需要创建一个类的对象(通常这个类需要实现某个接口或者继承某个类),而且对象创建后,
这个类的价值也就不存在了,这个类可以不必命名,称之为匿名内部类。

38.面向对象的特征
封装
继承
多态

JavaOOP笔记

标签:

原文地址:http://www.cnblogs.com/Crow00/p/4488873.html

(0)
(1)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!