java基础--面向对象入门
2012-10-04 10:29
344 查看
一、面向对象
2> 面向对象和面向过程都是一种思想
3> 面向过程:强调的是功能行为
2>可以将复杂的事情简单化
3>将程序员从执行者转变成了指挥者
4>完成需求时;
先要去找具有所需的功能的对象来用,如果对象不存在,那么创建一个具有所需功能的对象。
这样简化开发并提高复用。
设计的过程:其实就是在管理和维护对象之间的关系。
面向对象的特征:
封装(encapsulation)
继承(inheritance)
多态(polymorphism)
2> Java中描述事物通过类的形式体现,类是具体事物的抽象,概念上的定义
3> 对象即是该类事物实实在在存在的个体
2> Java中用类class来描述事物也是如此。
属性:对应类中的成员变量
行为:对应类中的成员函数
!!! 定义类其实就是在定义类中的成员(成员变量和成员函数)
1> 成员变量定义在类中,在整个类中都可以被访问。
2> 成员变量随着对象的建立而建立,存在于对象所在的堆内存中。
3> 成员变量有默认初始化值。
局部变量:
1> 局部变量只定义在局部范围内,如:函数内,语句内等。
2> 局部变量存在于栈内存中。
3> 作用的范围结束,变量空间会自动释放。
4> 局部变量没有默认初始化值。
2> 当对对象的方法只调用一次时,可以用匿名对象来完成,这样比较简化。
3> 匿名对象可以作为实际参数进行传递。
2> 便于使用
3> 提高复用性
4> 提高安全性
2> 把属性都隐藏,对外提供公共方法对其访问。
之所以对外提供访问方式,就是因为可以再访问方式中加入逻辑判断等语句。对方问的数据进行验证性操作。提高代码的健壮性。
2 用于修饰成员(成员变量和成员函数)
3 被私有化的成员只在本来中有效
4 常用之一:
将成员变量私有化,对外提供对应的set,get方法对其访问。提高对数据访问的安全性。
2> 不用定义返回值类型
3> 不可以写return语句
4> 对象一建立就会调用与之对应的构造函数
5> 当一个类中没有定义构造函数时,那么系统会默认给类加入一个空参数的构造函数。否则对象不能建立,因为对象没有办法初始化。
6> 多个构造函数是以重载的形式存在的。
2> 这个默认的构造函数的权限和所属类一致。
如果类被public修饰,那么默认的构造函数也带public修饰符。
如果类没有被public修饰,那么默认的构造函数,也没有public修饰。
默认构造构造函数的权限是随着的类的变化而变化的
构造代码块:
作用:给对象进行初始化,定义的是不同对象共性的初始化内容。
对象一建立就运行,而且优于构造函数执行。
和构造函数的区别:
构造代码块是给所有对象进行统一初始化。
而构造函数是给对应的对象初始化。
简单说:哪个对象在调用this所在的函数,this就代表哪个对象。
(本类功能内部调用本类对象时)
例如:
//需求:给Person类中定义一个用于比较年龄是否相同的功能。
publicboolean compare(Person p){
returnthis.age==p.age;
}
this语句:用于构造函数之间进行互相调用。且只能用在构造函数间的调用,一般函数不可以。
反证法:
如果this(name)不是放在第一行,那么先执行this.name = name;
name被赋予了lisi,但是在执行this()的时候,又重新赋予了最开始初始化的值:zhangsan.
结果并不是最初想要的lisi。
所以初始化的动作要先执行,再执行自己的初始化。
1 理解
1> 面向对象是相对于面向过程而言的2> 面向对象和面向过程都是一种思想
3> 面向过程:强调的是功能行为
2 面向对象:将功能封装进对象,强调具备了功能的对象
3 面向对象是基于面向过程的
4 面向对象的特点
1> 是一种符合人们思考习惯的思想。2>可以将复杂的事情简单化
3>将程序员从执行者转变成了指挥者
4>完成需求时;
先要去找具有所需的功能的对象来用,如果对象不存在,那么创建一个具有所需功能的对象。
这样简化开发并提高复用。
5 面向对象开发,设计,特征
开发的过程:其实就是不断创建对象,使用对象,指挥对象做事情。设计的过程:其实就是在管理和维护对象之间的关系。
面向对象的特征:
封装(encapsulation)
继承(inheritance)
多态(polymorphism)
6 类与对象的关系
1> 使用计算机语言就是不断的在描述现实生活中的事物2> Java中描述事物通过类的形式体现,类是具体事物的抽象,概念上的定义
3> 对象即是该类事物实实在在存在的个体
7 类的定义
1> 生活中描述事物无非就是描述事物的属性和行为。2> Java中用类class来描述事物也是如此。
属性:对应类中的成员变量
行为:对应类中的成员函数
!!! 定义类其实就是在定义类中的成员(成员变量和成员函数)
8 成员变量和局部变量的区别
成员变量:1> 成员变量定义在类中,在整个类中都可以被访问。
2> 成员变量随着对象的建立而建立,存在于对象所在的堆内存中。
3> 成员变量有默认初始化值。
局部变量:
1> 局部变量只定义在局部范围内,如:函数内,语句内等。
2> 局部变量存在于栈内存中。
3> 作用的范围结束,变量空间会自动释放。
4> 局部变量没有默认初始化值。
9 匿名对象
1> 匿名对象对于方法的调用有意义,而对于属性的操作没有意义。(调用后就变成垃圾了)2> 当对对象的方法只调用一次时,可以用匿名对象来完成,这样比较简化。
3> 匿名对象可以作为实际参数进行传递。
二、封装(Encapsulation)
封装:是指隐藏对象的属性和实现细节,仅对外提供公共访问方式。1 好处:
1> 将变化隔离2> 便于使用
3> 提高复用性
4> 提高安全性
2 封装原则:
1> 将不需要对外提供的内容都隐藏起来。2> 把属性都隐藏,对外提供公共方法对其访问。
之所以对外提供访问方式,就是因为可以再访问方式中加入逻辑判断等语句。对方问的数据进行验证性操作。提高代码的健壮性。
三、private关键字
1 是一个权限修饰符。2 用于修饰成员(成员变量和成员函数)
3 被私有化的成员只在本来中有效
4 常用之一:
将成员变量私有化,对外提供对应的set,get方法对其访问。提高对数据访问的安全性。
四、构造函数
1. 特点:
1> 函数名与类名相同2> 不用定义返回值类型
3> 不可以写return语句
4> 对象一建立就会调用与之对应的构造函数
5> 当一个类中没有定义构造函数时,那么系统会默认给类加入一个空参数的构造函数。否则对象不能建立,因为对象没有办法初始化。
6> 多个构造函数是以重载的形式存在的。
2 作用:
给对象进行初始化。当分析事物时,该事物存在具备一些特性或者行为,那么将这些内容定义在构造函数当中。3 构造函数的权限
1> 一个类中默认(看不见)会有一个空参数的构造函数,2> 这个默认的构造函数的权限和所属类一致。
如果类被public修饰,那么默认的构造函数也带public修饰符。
如果类没有被public修饰,那么默认的构造函数,也没有public修饰。
默认构造构造函数的权限是随着的类的变化而变化的
构造代码块:
作用:给对象进行初始化,定义的是不同对象共性的初始化内容。
对象一建立就运行,而且优于构造函数执行。
和构造函数的区别:
构造代码块是给所有对象进行统一初始化。
而构造函数是给对应的对象初始化。
五、this关键字
1 特点:
this代表其所在函数所属对象的引用。简单说:哪个对象在调用this所在的函数,this就代表哪个对象。
2 什么时候使用this关键字?
当在函数内需要用到调用该函数的对象时,就用this。(本类功能内部调用本类对象时)
例如:
//需求:给Person类中定义一个用于比较年龄是否相同的功能。
publicboolean compare(Person p){
returnthis.age==p.age;
}
this语句:用于构造函数之间进行互相调用。且只能用在构造函数间的调用,一般函数不可以。
3 this语句只能定义在构造函数的第一行
因为初始化要先执行否则编译不通过。反证法:
如果this(name)不是放在第一行,那么先执行this.name = name;
name被赋予了lisi,但是在执行this()的时候,又重新赋予了最开始初始化的值:zhangsan.
结果并不是最初想要的lisi。
所以初始化的动作要先执行,再执行自己的初始化。
使用this在构造函数间访问以及this必须放在第一行的示例:
class Person{ private String name; private int age; //构造代码块 { System.out.println("code run"); } Person(){ //this("zhangsan"); //访问Person(String name) System.out.println("person run"); } Person(String name){ //this(); //访问Person(),构成了死循环 this.name =name; } Person(String name,int age){ //this.name = name; //先进行自己的初始化得到:name = “lisi” //this(name); //再进行最原始的初始化,得到name=”zhangsan”,并不是自己传入的值,所以初始化应该先执行 this.age = age; } } class PersonDemo{ public static void main(String[] args) { new Person(); Person p = new Person("lisi",30); Person p1 = new Person("lisi2",36); } }
相关文章推荐
- android入门学习-java面向对象基础
- Java 基础入门随笔(7) JavaSE版——面向对象定义、特征:封装、构造函数
- Java基础学习第六天——二维数组与面向对象入门
- java基础--面向对象入门
- Java基础视频教程第05天_面向对象入门及this关键字
- Java面向对象基础--链表的改进
- java基础入门-对象流与序列化
- Java面向对象基础三
- Java学习——面向对象基础
- java基础入门-对象流与序列化
- Java基础之面向对象
- OC基础语法<1.1> 入门面向对象语法-OC类、点语法
- 学习笔记3—Java基础3_面向对象上a
- (java基础)java面向对象部分笔记
- java-基础-面向对象特性
- Java 面向对象基础定义
- Java基础之面向对象思想
- Java面向对象基础(封装,多态)=09/13
- 程序员_Java基础<一>-面向对象上
- JavaSE入门学习14:Java面向对象之内部类