黑马程序员——面向对象(一)
来源:互联网 发布:伊沃人工智能技术 编辑:程序博客网 时间:2024/05/11 14:35
黑马程序员——面向对象
-----------android培训、java培训、java学习型技术博客、期待与您交流!------------
一、面向对象的概念
1.理解面向对象
面向对象是相对面向过程而言的,面向对象和面向过程都是一种思想:面向过程强调的是功能行为,面向对象是将功能封装进对象,强调具备了功能对象。面向对象是基于面向过程的。
简单举例:电脑坏了,拿到修理店修理。面向过程强调的是修理电脑,面向对象强调的是修理店。这里修理店就是一个对象,它具备修理电脑这个功能。我们只要找到这个对象,即使自己不会修电脑,也可以完成修理电脑这件事。面向对象让我们从执行者变成指挥者,使事情变得简单化。
面向对象的3个特征:封装,继承,多态
二、类与对象的关系
类:就是对现实生活中事物的描述
对象:就是这类事物,实实在在存在的个体。
现实生活中的对象:张三,李四
想要描述:提取对象中共性内容,对具体的抽象。描述时,这些对象的共性有:姓名,性别 ,年龄等功能。
映射到java中,描述就是class定义的类,具体对象就是对应java在对内存中用new建立的实体。
例如:
汽车设计图和汽车。可以理解为类就是图纸,汽车就是堆内存中的对象
描述汽车(颜色,轮胎数)描述事物就是在描述事物的属性和行为
属性对应的是类中的变量,行为对应的是类中的函数
其实定义类,就是描述事物,就是在定义属性和行为。属性和行为共同成为雷总的成员(成员变量)
class Car{
//描述颜色
String color=red;
//描述轮胎数
Int num=4;
//运行行为
Viod run(){
}
}
class carp{
Public static void main(String[] args){
//生产汽车,在java中通过new操作符来完成
//其实就是在堆内存产生一个实体
Car c=new Car;//c就是一个类类型的变量。类类型的变量指向对象
//将已有车的颜色改成蓝色,值会该对象做使用。在java指挥方式是:对象.对象成员
c.color=”blue”;
}
}
成员变量和局部变量
作用范围
成员变量作用于整个类中
局部变量作用于函数中,或者语句中
在内存中的位置:
成员变量在堆内存中,因为对象的存在,才在内存中存在。
局部变量:存在栈内存中
匿名对象的使用:
1.当对象的方法值调用一次是,可以用匿名对象来完成,这样写比较简化,如果对象进行多个成员调用,必须给这个对象起个名字
2.可以将匿名对象最为实际参数进行传递。
三、封装
封装:是值隐藏对象的属性和实现细节,进对外提供公共访问方式
好处:将变化隔离
便于使用
提高重用性
提高安全性
封装原则:
将不需要对外提供的内容都隐藏起来
把属性都隐藏,提供公共方法对其访问
修饰符private:私有,权限修饰符,用于修饰类中的成员(成员变量,成员函数)。私有只在本类中有效。
class Person{
Private int age;
/*public void setAge(int a){
age=a;
}*/
void speak(){
System.out.println(age);
}
}
class PersonD{
public static void main(String[] args){
Person p=new Person();
p.age=20;//这里就不能编译成功,因为age已经被私有,不能被修改
//p.steAge(20);
}
}
将age私有以后,类以外即使建立了对象也不能直接访问,但是人应该有年龄,就需要在Person类中提供对应访问age的方法。
注:私有仅仅是封装的变现形式。
之所以对外提供访问方式,是因为可以在访问方式中加入逻辑判断等语句。对访问的数据进行操作,提高代码的健壮性。
如:
Private int age;
public void setAge(int a){
If(a<100&& a>0)
age=a;
else
System.out.println(“no”);
四、构造函数
特点
1.函数名与类名相同
2.不用定义返回值类型
3.不可以写return语句
作用:
给对象进行初始化
注意:
1.默认构造函数的特点
2.多个构造函数是以重载的形式存在。
对象一建立就会调用与之对应的构造函数。
class Person{
//Person(){}
Person{
Systemm.out.println(“person”);
}
}
构造函数的小细节:
当一个类中没有定义构造函数时,那么系统会默认给该类加入一个空参数的构造函数。
当在类中定义了构造函数后,默认的构造函数就没有了。
构造函数和一般函数在写法上有所不同。在运行上也有所不同。
构造函数是在对象一建立就运行,给对象初始化。
而一般方法是对象调用才执行,给对象添加对象具备的功能。
一个对象建立,构造函数值运行一次。而一般方法可以被该对象调用多次。
什么时候定义构造函数?
当分析事物时,该事物存在具备一些特性或者行为,那么将这些内容定义在构造函数中。
构造代码块
作用:给对象进行初始化。对象一建立就运行,而且优先于构造函数执行。
和构造函数的区别:
构造代码块是给所有对象就行初始化,而构造韩式是给对应对象初始化。
构造代码块中定义的是不同对象共性的初始化内容。
class Person{
{
Systemm.out.println(“person”);
}
Person{
Systemm.out.println(“person1”);
}
}
- 黑马程序员—java面向对象一
- 黑马程序员—面向对象(一)
- 黑马程序员———面向对象(一)
- 黑马程序员——JAVA面向对象(一)
- 黑马程序员——day05面向对象(一)
- 黑马程序员——面向对象(一)
- 黑马程序员——面向对象(一)
- 黑马程序员——二维数组、面向对象(一)
- 黑马程序员—OC—面向对象(一)
- 黑马程序员——面向对象(一)
- 黑马程序员——java面向对象(一)
- 黑马程序员——Java面向对象知识点(一)
- 黑马程序员——面向对象(一)
- 黑马程序员——JAVA 面向对象总结(一)
- 黑马程序员——面向对象(一)
- 黑马程序员——面向对象(一)
- 黑马程序员——面向对象(一)
- 黑马程序员——Java基础--面向对象(一)
- 黑马程序员--OC基础--面向对象三大特征
- spring bean初始化和销毁
- java基础之java中的基本数据类型
- 自动布局之autoresizingMask使用详解(Storyboard&Code)
- 编程思想之多线程与多进程(3)——Java中的多线程
- 黑马程序员——面向对象(一)
- win python3.4.3安装和环境变量配置
- 用Pandas完成Excel中常见的任务(1)
- 说说领域驱动设计和贫血、失血、充血模型
- 构造函数、析构函数和赋值函数
- 黑马程序员——面向对象(二)
- LeetCode_Linked List_Linked List Cycle
- 黑马程序员——面向对象(三)
- C专家编程整理笔记