创建冰箱图纸类java_Java基础班第五天笔记

第五天总结

1. 面向对象

1.1 面向对象概念

1.1.1 理解面向对象

a.面向对象是相对于面向过程而言的

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

c.面向对象基于面向过程

d.面向过程强调的是功能行为,面向对象强调的是具有功能的对象

1.1.2 面向对象的特点

a.符合人们思考习惯的思想

b.可以将复杂的事情简单化

c.让程序员从执行者转变成指挥者

d.完成需求时

⑴.先要去找具有所需的功能的对象来使用

⑵.如果没有这样的对象,那么就创建一个这样的对象

⑶.简化开发,提高代码的s复用性

1.1.3 面向对象开发、设计和特征

开发的过程:开发的过程就是在不断的创建对象,使用对象

指挥对象去做事情。

设计的过程:就是在管理和维护对象之间的关系

面向对象的特征:

a.封装(encapsulation)

b.继承(inheritance)

c.多态(polymorphism)

1.1.4 举例

a.把大象装进冰箱

面向过程

1,打开冰箱

2,装进大象

3,关闭冰箱

代表语言:C语言,开发时重点在于定义函数

面向对象

1,冰箱打开

2,冰箱存储

3,冰箱关闭

b.人开门

分析:有两个对象人和门。

问题:那么开门这个行为是属于人还是属于门呢?

因为开门这个方法会使用到门中的一些数据(如:门轴,门链等)

所以开门这个方法应该定义在门中,而让人去调用门的开门方法。

结论:当定义成员函数出现含糊时,就分析这个函数需要用到了哪个类的成员

数据,哪个类用到就定义在哪个类中。

2. 类与对象之间的关系

(一).使用计算机语言就是不断的在描述现实生活中的事物

(二).Java中描述事物通过类的形式体现,类时具体事物的抽象,概念上的定义

(三).对象即是该类事物的实体。

2.1 类与对象

比如汽车的图纸和汽车,我们可以将图纸理解为类,汽车理解为堆内存中的对象。

2.2 类的定义

a.在现实生活中,描述事物无非就是描述事物的属性和行为,比如:人有身高,体重,

有跑步,睡觉,走路等行为。

b.在Java中,用类(class)来描述事物也会是如此

⑴.属性:成员变量

⑵.行为:成员函数

c.类就是将对象中共性内容不断抽取出来的抽象描述

d.定义类其实就是在定义成员变量和成员函数

2.3 .class文件

a.当对象在创建(new)的时候需要的是.class文件,所以如果该类已经编译好了,生成了对应的

.class文件,那么如果把源文件删除了还是可以创建该类的对象,如果没有编译生成.class文件

那么如果把源文件删除了,那就无法创建该类的对象。

b.只有创建了该类的对象,该类的.class文件才会被加载到内存中

2.4 局部变量与成员变量的区别

a.定义的位置

局部变量定义在函数或者语句中

成员变量定义在类中

b.内存中的位置

局部变量在栈内存中

成员变量在堆内存中

c.初始化值

局部变量没有初始化值,必须显示初始化后才能使用

成员变量有默认初始化值

d.生命周期

局部变量一旦作用域结束,就立刻释放

成员变量也称为实例(对象)变量,随着对象的创建而存在,随着对象的被回收而消失

2.5 创建对象,使用对象

// 对Car这类事物进行描述

class Car

{

public void driver()

{

System.out.println("topSpeed=" + topSpeed + " color=" + color);

}

String color;

int topSpeed

}

class CarDemo

{

public static void main(String[] args)

{

Car c = new Car(); // 创建汽车的对象

c.color = "red";   // 对Car对象的color属性进行修改

c.topSpeed = 350;  // 对Car对象的topSpeed属性进行修改

c.driver();        // 调用Car的driver的功能

}

}

2.6 对象创建在内存中的过程

Person p = new Person("张三", 20);

Java程序启动时,首先将main函数压入栈中,有一个Person类型的p变量,

然后在堆内存中开辟了一段空间存储着Person对象的数据,

首先成员变量name初始化为null,成员变量age初始化为0,

然后Person(String, int)构造函数压入栈中,将"张三"和20

传入,然后成员变量name被赋值为"张三",age被赋值为20,最后把Person对象

的内存首地址赋值给p变量。

2.7 匿名对象

a.匿名对象是对象的简化形式

b.匿名对象两种使用情况

⑴.当对对象方法仅进行一次调用时

⑵.匿名对象可以作为实际参数进行传递

3. 封装

3.1 概述

隐藏对象的实现细节和属性,仅对外提供公共的访问方式

3.2 封装的好处

a.将变化隔离

b.便于使用

c.提高复用性

d.提高安全性

3.3 封装的原则

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

b.将属性都隐藏,对外提供公共的访问方式

3.4 private关键字

a.是一种权限修饰符

b.用于修饰成员(成员变量和成员函数)

c.被private修饰的成员只能在本类中访问

d.常用之一:将成员变量私有化,对外提供set和get方法进行访问,

提高数据的安全性

注意:private(私有)仅仅是封装的表现形式之一

4. 构造函数(constructor)

4.1 特点

a.构造函数名与类名相同

b.构造函数不能定义返回值类型

c.构造函数不能返回具体的返回值

d.构造函数在对象创建时就会被调用

e.默认构造函数的访问权限如果不定义,就会取决于类的访问权限

4.2 作用

给对象进行初始化

4.3 注意事项

a.如果我们不自定义构造函数,那么编译器会提供给我们一个默认的

没有形参的构造函数,如果我们自定义了任意形式的一个构造函数

那么默认的无参构造函数编译器就不会提供给我们。

b.多个构造函数可以以重载的形式存在

c.一般函数与构造函数之间没有重载关系。

d.一般函数名可以与构造函数同名

e.构造函数可以有return;可以省略不写,编译器会加上

注意:

class Person

{

// 这个已经不是构造函数了,因为构造函数是没有返回值类型的,

// 所以这样写Person()变成了一般函数。编译时可以通过的,

// 这样就没有自定义构造函数,所以编译器会提供一个默认构造函数

public void Person()

{

}

}

class Student

{

public Student(String name, int age)

{

// 可以提前结束构造函数初始化

if (age < 0)

return;

this.name = name;

this.age = age;

}

}

4.4 构造函数与一般函数的区别

a.构造函数用于给对象初始化,初始化动作只执行一次,没有返回类型

b.一般函数可以被多次调用,有返回类型

5. this关键字

5.1 概述

this代表对象,是一个对象的引用。哪个对象调用了this所在的函数,

this就代表哪个对象。

5.2 this关键字的使用             a.当成员变量和局部变量同名时,可以用this区分             b.使用this(参数列表)的方式就可以实现构造函数之间的调用,注意,               只能定义在构造函数的第一行,因为初始化动作必须先执行             c.当功能内部使用到了本类对象时,用this表示             d.可以定义返回本类类型的成员函数,这样创建匿名对象时,可以               连续调用多个方法

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值