java中 类和面向对象的关系_java入门(十四) | 面向对象(OOP)之类和对象

上一期是变量,在java中变量总是无处不在,而变量其意就是可以改变的数,在一般情况下我们可以以变量类型,变量名,变量值来描述它

这一期是给面向对象(OOP)开了一个头,对他的概念,三大特征有了一个基础的认识,重点对类和对象进行了讲解与运用

面向对象(OOP)

1.1 概念

Thinking in java

所谓的面向对象是一种编程思想,通过这种思想可以把生活中的复杂事情变得简单化,从原来的执行者变成了指挥者。

面向对象是基于面向过程而言的。

我们经常说的面向对象的编程实现(OOP,Object Oriented Programming)

1.2 三大特征

封装性,把相关的数据封装成一个“类”组件

继承性,是子类自动共享父类属性和方法,这是类之间的一种关系

多态,增强软件的灵活性和重用性

类和对象

2.1 类

1、 Java语言最基本单位就是类,类似于类型。

2、 类是一类事物的抽象。

3、 可以理解为模板或者设计图纸。

2.2 对象

每个对象具有三个特点:对象的状态,对象的行为和对象的标识。

1、 对象的状态用来描述对象的基本特征。

2、 对象的行为用来描述对象的功能。

3、 对象的标识是指对象在内存中都有一个唯一的地址值用来和其他对象区分开来。

4、 类是一类事物的抽象,对象是具体的实现。

汽车类:

实现可以有奥迪汽车对象、有宝马汽车对象。

2.3 类和对象的关系

计算机语言是用来描述现实世界事物的。通过描述事物的特征和事物的行为来描述

那怎么通过java语言描述呢?通过类来描述事物,把事物的属性当做成员变量,把行为当做成员方法。

分析手机事物:

类:手机类,抽取相同的特征和功能

对象:可以按照模板生产很多个手机,比如1号手机对象,包含特有的成员变量和成员方法

a9b7e41255527df805758a9a403f0b42.png

类和对象的创建和使用

通过class关键字创建类

通过new关键字创建对象。

3.1 练习1:类的创建和使用

创建Phone类:

package cn.qile.oop;

/**

* Phone类用来描述手机事物

* 类是一类事物的抽象,只是抽象的规定一类事物该有的样子,具体的实现要看对象

* 描述事物:事物的特征/属性 + 事物的功能/行为

*/

public class Phone {

//事物的特征/属性 -- 成员变量

String color; //颜色

int size; //尺寸

String pinpai; //品牌

double price; //价格

//事物的功能/行为 -- 成员方法

public void call(){

System.out.println("正在打电话");

}

public void message(){

System.out.println("正在发短信");

}

public void music(){

System.out.println("正在听音乐");

}

}

创建Test1_Phone测试类:

package cn.qile.oop;

//测试手机类的使用

public class Test1_Phone {

public static void main(String[] args) {

//通过new关键字,创建手机对象具体描述类的信息

//p是引用类型的变量,引用的是地址值

Phone p = new Phone();

//设置对象属性的值

p.color = "红色";

p.size = 5;

p.pinpai = "HUAWEI";

p.price = 9999;

//调用模板规定的属性/变量

System.out.println(p.color);//null -- "红色"

System.out.println(p.size);//0 -- 5

System.out.println(p.pinpai);//null --"HUAWEI"

System.out.println(p.price);//0.0 --9999.0

//调用模板规定的功能

p.call(); //正在打电话

p.message();//正在发短信

p.music(); //正在听音乐

}

}

3.2 对象在内存中的存储

一般来讲局部变量存在栈中,方法执行完毕内存就会被释放

对象(new出来的东西)存在堆中,对象不再被使用时,内存才会被释放

每个堆内存的元素都有地址值

对象中的属性都有默认值的

3.3 单一对象内存图

9781e2efb5b5009916b38cfa7f9d785f.png

3.4 创建多个对象

对上方的Phone类进行更改:

package cn.qile.oop;

/**

* Phone类用来描述手机事物

* 类是一类事物的抽象,只是抽象的规定一类事物该有的样子,具体的实现要看对象

* 描述事物:事物的特征/属性 + 事物的功能/行为

*/

public class Phone {

//事物的特征/属性 -- 成员变量

String color; //颜色

int size; //尺寸

String pinpai; //品牌

double price; //价格

//事物的功能/行为 -- 成员方法

public void call(){

System.out.println("正在打电话");

}

public void message(){

System.out.println("正在发短信");

}

public void music(){

System.out.println("正在听音乐");

}

//更改数据

//toString() -- 查看属性的值

@Override

public String toString() {

return "Phone{" +

"color='" + color + '\'' +

", size=" + size +

", pinpai='" + pinpai + '\'' +

", price=" + price +

'}';

}

}

更改Test1_Phone:

package cn.qile.oop;

//测试手机类的使用

public class Test1_Phone {

public static void main(String[] args) {

//通过new关键字,创建手机对象具体描述类的信息

//p是引用类型的变量,引用的是地址值

Phone p = new Phone();

//设置对象属性的值

p.color = "红色";

p.size = 5;

p.pinpai = "HUAWEI";

p.price = 9999;

//调用模板规定的属性/变量

System.out.println(p.color);//null -- "红色"

System.out.println(p.size);//0 -- 5

System.out.println(p.pinpai);//null --"HUAWEI"

System.out.println(p.price);//0.0 --9999.0

//调用模板规定的功能

p.call(); //正在打电话

p.message();//正在发短信

p.music(); //正在听音乐

//添加了p2第二个手机数据

Phone p2 = new Phone();

//设置对象属性的值

p2.color = "玫瑰金";

p2.size = 6;

p2.pinpai = "VIVO";

p2.price = 5888;

//调用模板规定的属性/变量

// System.out.println(p2.color);//玫瑰金

// System.out.println(p2.size);//6

// System.out.println(p2.pinpai);//"VIVO"

// System.out.println(p2.price);//5888.0

//由于Phone类中提供了toString(),所以直接打印p2就能看属性的值

// Phone [color=玫瑰金, size=6, pinpai=VIVO, price=5888.0]

System.out.println(p2);

//调用模板规定的功能

p2.call();

p2.message();

p2.music();

}

}

3.5 多个对象内存图:

af4067f483d4339686ec0205fc4bef09.png

关注【其乐不是码农】,回复【java入门】,阅览Java入门全系列!!

其乐等待着你的到来

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值