黑马程序员——第五天(Java面向对象基础)

---------------------- android培训java培训、期待与您交流! ----------------------

一.面向对象(概述)

面向对象其实是一种思想  它是思考问题的一种思考方式

它早期的思想就是面向过程

1.面向对象是相对面向过程而言

2.面向对象和面向过程都是一种思想

3.面向过程

强调的是功能行为

4.面向对象

将功能封装进对象,强调具备了功能的对象,

5.面向对象是基于面向过程的


人开门

人是个事物  门是个事物

你在使用门的开的方法 将门打开


从原来的执行者 过渡 到了指挥者

二.面向对象(举例)

1.能把复杂问题简单化

2.从原来的执行者 过渡 到了指挥者


对象不是单单指人

万物皆对象

你所看到的  你说想到的概念 都可以看作是一个对象


写程序的时候  不是先定义功能 而是先定义一个对象


三.面向对象(类与对象的关系)

人开门

分析一下这句话里有几个对象 

名词提炼法


人{

开门(门){

门.开();

}

}

门{

开(){操作门轴。。}

}


面向对象:三个特征:封装、继承、多态。

以后的开发:其实就是找对象使用,没有对象,就创建一个对象。

找对象,建立对象,使用对象,维护对象的关系。


对象其实就是多个功能的封装。


类和对象的关系:

现实生活中的对象:张三 李四 

想要描述:提取对象中工行内容,对具体的抽象。

描述时,这些对象的共性有:姓名,年龄,性别,学习java功能。


映射到java中,

描述在Java当中 用类(Class) 的形式来体现的 

对象 在java当中  是用new 操作符所产生的一个实体  这个实体在堆内存当中

描述一个事物 无非就是描述两部分

1.描述这个事物的属性 ------>对应的是类中的变量

2.描述这个事物的行为(功能) ------>对应的是类中的方法(函数)

属性和行为又共同成为类中的成员(成员变量,成员方法)



类就是:对现实生活中事物的描述

对象:就是这类事物,实实在在存在的个体(对象的特点就是用来封装数据(属性、行为))

//需求:描述一辆汽车 颜色 轮胎数
public class Test01 {
	public static void main(String[] args) {
		//生产汽车 在java中 通过new操作符来完成  其实就是在堆内存中产生一个是实体
		Car c = new Car();//c就是一个类类型变量  记住:类类型变量指向对象 引用数据类型
		//堆内存中的变量  都有一个特点  叫做默认初始化值
		
		//需求:将已有的车的颜色改成蓝色,指挥该对象做事情,在java中指挥方式是 对象.对象成员
		c.color = "blue";
		c.run();
		
		Car c1 = new Car();
		c1.run();
	}
}

class Car{
	//描述颜色
	String color = "红色";
	//描述轮胎数
	int number = 4 ;
	//描述行为
	void run(){
		System.out.println(color+"....."+number);
	}
}

四.面向对象(成员变量和局部变量)

成员变量 和局部变量

作用范围:
成员变量作用于整个类中

局部变量作用于函数中,或者语句中(for)

在内存中的位置:

成员变量,在堆内存中,因为对象的存在,才在内存中存在

局部变量,存在栈内存中。


五.面向对象(匿名对象的应用)

调用方法 匿名对象比较有意义

而调用属性 匿名对象是没有意义的 

调用属性后,执行下一句  该属性在堆内存中成为垃圾


匿名对象使用方式一:当对对象的方法只调用一次时可以用匿名对象来完成,这样写比较简化

可是,如果对一个对象  进行多个成员调用,必须给这个对象起个名字


匿名对象的使用方式二:可以将匿名对象作为实际参数进行传递 

六.面向对象(封装概述)

封装(Encapsulation)

1.封装:是指隐藏对象的属性和实现细节,仅对外提供公共访问方式

2.好处:

将变化隔离

便于使用

提高重用性

提高安全性

3.封装原则:

将不需要对外提供的内容都隐藏起来

把属性都隐藏,提供公共方法对其访问。


函数本身就是最小的封装体

类 包 框架

权限修饰符

public   公共的   

private  私有的 


七.面向对象(封装private)

private : 私有, 权限修饰符: 用于修饰类中的成员(成员变量、成员方法)

私有只在本类中有效。

将变量私有化以后 类以外及时建立的对象  也不能直接访问了 

就要对外提供一个方法  去访问这个成员变量

一个成员变量通常都会对应 两个访问方式  

一个叫设置set  一个叫获取get


注意:封装只是私有的一种表现形式


之所以对外提供访问方式 就是因为可以在访问方式中可以加入逻辑判断等语句  

对访问的数据进行操作,提高了代码的健壮性。


八.面向对象(构造函数)

格式是固定

特点:

1.函数名与类名相同

2.不用定义返回值类型(和void 不同   void是一种返回值类型  ,代表着没有具体结果返回的情况)

3.不可以写return 语句

作用

给对象进行初始化

注意:

1.默认构造函数的特点

2.多个构造函数是以重载的形式存在的 


对象一建立  就会调用与之对应的构造函数

构造函数的作用:可以用于给对象进行初始化

构造函数的一个小细节:

当一个类中 没有定义构造函数时,那么系统就会默认给该类加入一个空参数的构造函数

方便与对该类进行初始化

当在类中自定义了构造函数后  默认的构造函数就没有了 


构造函数和一般函数  在写法上有不同

在运行上也有不同

构造函数是在对象一建立就运行,给对象初始化

而一般方法是,对象调用才执行

是给对象添加对象具备的功能  

一个对象建立,构造函数只运行一次

而一般方法可以被对象调用多次   


什么时候定义构造函数呢 ?

当分析事物时,该事物存在具备一些特性或行为,那么将这些内容定义在构造函数中。


九,面向对象(构造代码块)

{

代码实现;

}
作用:给对象进行初始化

对象一建立就运行,而且优先于构造函数执行

和构造函数的区别:

构造代码块是给所有对象进行统一初始化

而构造函数 是给对应的对象初始化 


构造代码块 定义不同对象共性的初始化内容

也是一种抽取方式


十.面向对象(this关键字)

this:看上去,是用于区分局部变量和成员变量同名的情况

this为什么可以解决这个问题?

this到底代表的是什么呢 ?

this就代表本类的对象 到底代表哪一个呢?

this代表它所在函数所属对象的引用

简单说,哪个对象在调用this所在的函数,this就代表哪个对象。


 十一.面向对象(this关键字的应用)

this的应用,当定义类中功能(函数)时,该函数内部要用到调用该函数的对象时,这时用this来表示这个对象

但凡,本类功能内部使用到了本类对象,都用this表示

十二.面向对象(this关键字在构造函数间调用)

this语句:用于构造函数之间进行互相调用

this语句只能定义在构造函数的第一行

它是一个规则

初始化的动作要先执行

如果初始化中还有初始化  

那就想执行那个更细节的初始化  

然后再执行自己的初始化 

这就是为什么this语句要放在构造函数的第一行 


this的用法: 

1.用于区分同名变量的时候(成员和局部)

2.用于构造函数间调用  

一般函数是不能直接调用构造函数 

因为这个this语句是不能用于一般函数中的  只应用于构造函数间

----------------------  android培训java培训、期待与您交流! ----------------------


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值