java_面向对象
来源:互联网 发布:阿里的数据平台两个 编辑:程序博客网 时间:2024/05/17 04:16
1.面向对象的概念
在java领域中,有这么一句很有名的话: "万物皆对象"。不过这一般都是java高手才说出的话。而相对于我这个菜鸟而言,还是应该从基础开始理解。
面向对象是一种思想。相对面向过程而言,将一些东西封装起来,复杂变得简单。从执行者转换为下令者。举几个简单的例子。如:
1)人开门,下令者是人,而真正执行的是门自己,门调用自己的方法,把门打开。
2)去饭店吃饭,顾客调用服务员的点餐功能,服务员使用自己的传菜单给后厨的功能,后厨行使自己的做饭功能,然后将饭菜给传菜生,传菜生调用自己的传菜功能最终将饭菜给顾客。而并非是顾客自己去后厨做。
其实开发就是找对象用,没有对象,创建对象,使用对象,并维护对象之间的关系。
面向对象的三种特征:封装,继承,多态
2.类和对象的关系
类:对现实生活中的描述。
对象:就是类描述事物在现实中实实在在的体现。
好比根据图纸制造汽车,图纸就是类,而汽车就是那对象。图纸(类)有一个,但可以根据图纸创造很多汽车(对象)。
如何定义类:提取对象中的共性内容。对具体的抽象。
其中,属性在类中对应的是类中变量,行为在类中对应的是类中函数。
变量又分为成员变量与局部变量
成员变量:作用于整个类中。
创建对象:Car car=new Car(); 使用new关键字,具体对象就是对应java在堆内存中new建立出来实体。car是类类型变量,指向new Car()在内存中的位置。car存储在栈内存中。
3.匿名对象
匿名对象,顾名思义,没有名字的对象。拿Car类举例, new Car()就是一个匿名对象。
作用:1)可以将匿名对象作为实际参数传递。
2)当对象的方法只调用一次时,有时可以用匿名对象来调用。简化代码。
当内中中的对象没有被指向时,就会成为垃圾
封装(ENcapsulation)
私有仅仅是封装的一种表现形式。
之所以对外提供访问方式,就因为可以在访问方式中操控的元素。
封装:是指隐藏对象的属性和实现细节,仅对外提供公共访问方式。
好处:1、将变化隔离
2、便于使用
3、提高重用性
4、提高安全性
封装原则:
1、将不需要对外提供的内容都隐藏起来。
2、把属性都隐藏,提供公共方法对其访问。、
3.4 构造函数
特点:
1、函数名与类名相同
2、不用定义返回类型
3、不可以写return语句
作用:
1、结合对象进行初始化
**************
小细节:
1、当一个类中没有定义构造函数时,那么系统就会默认给该类加入一个空参数的构造函数。
2、当类中自定义了构造函数后,默认的构造函数就没有了。(即系统就不会再调用这个默认的构造函数了。)
3、构造函数和一般的写法上不同,在运行上也有不同。(A、构造函数实在对象已建立就运行,给对象初始化。而
一般方法是对象调用才执行,是给对象添加,对象具备的功能。B、一个对象建立,构造函数只运行一次,而一般方
法可以被对象调用多次。)
什么时候定义构造函数呢?
当分析事物时,该事物存在具备一些特性或者行为,那么将这些内容定义在构造函数中。
/*
{
System.out.println("我爱你!");
}
构造代码块,
作用:给对象进行初始化,对象已建立就运行,而且优先于构造函数执行。
和构造函数的区别:
构造代码块是给所有对象进行统一初始化,而构造函数是给对应的对象初始化。
*/
/*
this: 就代表本类的对象,到底代表哪一个?
this代表他所在函数,所属对象的引用。
简单说,哪个对象在调用this所在的函数,this就代表那个对象。~!
this语句只能定义在构造函数的第一行,因为初始化要先执行。比如下面的例子:
class person{
...
Person(String name,int age){
this(name); // 这个就是this语句,相当于一个name的初始化。不能是 /*this.name=name;
this.name=name;//而这句话有了上面这句,就可以不用写了 this(name); */
this.age=age;
}
Person(String name){
this.name=name;
}
}
*/
- java_面向对象
- java_面向对象
- java_面向对象
- JAVA_面向对象1
- JAVA_面向对象2
- Java_面向对象(1)
- 笔记6:java_面向对象
- JAVA_面向对象高级特性
- Java_面向对象_类
- JAVA_面向对象_笔记_01
- Java_面向对象笔记总结(一)
- Java_面向对象(1)_续
- Java_面向对象相关(总览及突破)
- JAVA_基础之面向对象的概念
- 一起学Java_面向对象(1)
- 一起学Java_面向对象(2)
- 一起学Java_面向对象(3)
- 一起学Java_面向对象(4)
- 【phpcms-v9】phpcms-v9应用程序创建类phpcms/libs/classes/application.class.php文件分析
- iOS面试题
- 零零散散学算法之详解数据压缩算法(下)
- 超大整数加法模板
- 搜索引擎设计一(百度为例)
- java_面向对象
- ubuntu10.04 mysql安装以及配置
- Oracle 数据类型及存储方式
- 关于二维码分块上色(彩色二维码)的算法研究
- [C++]数据结构:链表二叉树的创建与四种遍历方式
- 浙大CS延毕本科生,今年拒掉Google硅谷总部offer的就是他
- css
- Core API之Class接口和组件
- AJAX异步更改数据库