面向对象编程初步
面向对象和面向过程的区别:
共同点:面向过程和面向对象都是解决实际问题的一种思维方式
二者相辅相成,并不是对立的。解决复杂问题,通过面向对象方式便于我们从宏观上把握事物之间复杂的关系、方便我们分析整个系统;具体到微观操作,仍然使用
面向过程方式来处理
区别:
1.面向过程:事物比较简单,可以用线性的思维去解决
2.面向对象:事物比较复杂,使用简单的线性思维无法解决
类和对象:
类和对象是面向对象程序设计的核心。编写程序对问题的一个问题的求解的过程可以看作是定义类和对象的过程。
对象:是具体的事物
对象是类的具体实现,表示一个独立的、唯一的个体。
▪ 类:是对对象的抽象(抽象 抽出象的部分)
类是对一组具有相同特征和行为的对象的抽象描述。
类和对象的区别
类是抽象的,是一个群体概念。对象是具体的,是一个独立个体。
一个独立的对象一定属于某个类。理解为类包含对象
对象的属性和方法:
属性:
类或者对象具有的特征在程序中称为属性(property/attribute)
具体对象的属性拥有的数据称为属性值。
属于同一类对象都具有相同的属性,但各个对象都拥有各自的属性值。这些属性值区分了不同的对象。
方法
类或者对象的行为称为方法(Method)
在java中
类是具有相同属性和方法的对象的集合。
对象是用来描述客观事物的一个实体,由一组属性和方法构成。
类是对象的类型。
java类和对象的关系是:
对象是类实例化出来的,对象中含有类的属性,类是对象的抽象。
类的属性:
▪属性 field,或者叫成员变量
▪属性用于定义该类或该类对象包含的数据或者说静态属性。
▪属性作用范围是整个类体
▪在定义成员变量时可以对其初始化,如果不对其初始化,Java使
用默认的值对其初始化。
类的方法:
1)必须有返回值,如果方法没有返回值,必须用void申明返回类型。
2) 构造器没有返回类型,构造器加上了返回类型就变成了一个普通方法的声明了。
3) 方法的修饰符可以同时有多个(多个修饰符之间没有先后顺序)
类的定义
类是一种引用数据类型。类为对象的模板,简单的说就是分类。类是一个模板,它描述一类对象的行为和状态。类的定义包括“成员变量”的定义和“方法”的定义,其中“成员变量”用于描述一类对象共同的数据结构。
类是用class关键字来定义的一种抽象数据类型,类不但定义了抽象数据类型的组成(成员变量),同时还定义了对该类型可以实施的操作(方法),类名的首字母必须大写
如何定义一个类:
1.先定义一个类;
2.定义类的属性(成员变量);
3.定义类的方法;
4.定义类的局部变量。
如何创建和使用对象
1.创建对象:类名 对象名 = new 类名();
2.使用对象
引用对象的属性:对象名 . 属性
引用对象的方法:对象名 . 方法名()
局部变量和成员变量:
成员变量和局部变量的区别:
区别一:定义的位置不同。
成员变量定义在类中。
局部变量定义在方法中。
区别二:在内存中的位置不同。
成员变量存储在堆内存的对象中。
局部变量存储在栈内存的方法中。
区别三:声明周期不同:
成员变量随着对象的出现而出现,随着对象的消失而消失。
区别四:初始化不同:
成员变量因为在堆内存中,所以有默认的初始化值。
局部变量没有默认初始化值,必须初始化后才可以使用。
引用类型:
Java 语言中除基本类型之外的变量类型都称之为引用类型。
Java中的对象和数组是通过 引用 对其操作的.
引用可以理解为一种受限的指针
指针是可以进行不整数做加减运算的,两个指针之间也可以进行大小比较运算和相减运算。引用不行,叧能进行赋值运算。
引用就是一个变量或对象的别名(引用的本质是一个对象);指针是一个段内存空间的地址(指向存储一个变量值的空间或一个对象的空间)
内存分析
栈:一般来说,基本数据类型直接在栈中分配空间,局部变量(在方法代码段中定义的变量)也在栈中直接分配空间,当局部变量所在方法执行完成之后该空间便立刻被JVM回收,还有一种是引用数据类型,即我们通常所说的需要用关键字new创建出来的对象所对应的引用也是在栈空间中,此时,JVM在栈空间中给对象引用分配了一个地址空间(相当于一个门牌号,通过这个门牌号就可以找到你家),在堆空间中给该引用的对象分配一个空间,栈空间中的地址引用指向了堆空间中的对象区
堆:一般用来存放用关键字new出来的数据。
构造方法:
1.方法名与类名相同
2.没有返回类型(void也不行)
3.构造方法是在创建实例时会被自动调用
4.一个类可能没有构造方法,但一定有系统隐蔽无参的构造方法,也有多个构造方法(他们之间构成重载)
5.定义了有参数的构造方法,就会屏蔽掉系统无参构造方法
6.构造方法不能被继承
对象初始化
编译器为每个类生成至少一个实例初始化方法,即<init>()方法。此方法与源程序里的每个构造方法对应。如果类没有声明构造方法,则生成一个默认构造方法,该方法仅调用父类的默认构造方法,同时生成与该默认构造方法对应的<init>()方法。
-
调用另一个<init>()方法(本类的另外一个<init>()方法或父类的<init>()方法);
-
初始化实例变量;
-
与其对应的构造方法内的字节码

被折叠的 条评论
为什么被折叠?



