上一期是变量,在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号手机对象,包含特有的成员变量和成员方法

类和对象的创建和使用

通过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 单一对象内存图

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 多个对象内存图:

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

其乐等待着你的到来

java怎样用类模板创建对象_java入门(十四) | 面向对象(OOP)之类和对象相关推荐

  1. java求方程的根运行图_Java程序设计(十四)----一个求一元二次方程根

    * 程序的版权和版本声明部分 * Copyright (c) 2012, 烟台大学计算机学院学生 * All rights reserved. * 作 者: 刘镇 * 完成日期: 2012 年 11 ...

  2. C++类模板5分钟入门

    参考自http://c.biancheng.net/view/2318.html C++ 除了支持函数模板,还支持类模板(Class Template).函数模板中定义的类型参数可以用在函数声明和函数 ...

  3. java oop入门_java入门(十六) | OOP(三)之构造方法

    构造方法 1.1 概念 构造方法是一种特殊的方法,它是一个与类同名的方法. 对象的创建就是通过构造方法来完成. 其功能主要是完成对象的创建或者对象的初始化. 当类实例化new一个对象时会自动调用构造方 ...

  4. java中类与类的关系_Java中类与类的关系

    在java中类和类的关系大致分三种:泛化.关联.依赖. 1. 泛化(Generalization) "XX是一个XX"关系(is a),通常使用的关键词为 extends.impl ...

  5. java定义一个类显示没有_Java 中的每个类都至少有一个构造方法,一个类中如果没有定义构造方法,系统会自动为这个类创建一个默认的构造方法。_学小易找答案...

    [单选题]关于 Java 语言叙述错误的是( ). [判断题]类中 static 修饰的变量或方法,可以使用类名或对象的引用变量访问. [命名题]命名下列化合物, [单选题]急性胰腺炎的主要临床表现是 ...

  6. java中string类面试题_java中String类的面试题大全含答案

    1.下面程序的运行结果是()(选择一项) String str1="hello"; String str2=new String("hello"); Syste ...

  7. 类模板 - C++快速入门45

    类模板 让编程改变世界 Change the world by program 需要注意的地方 在创建模板时,还可以用template <typename T>来代替template &l ...

  8. java中日历类的用法_java日期类的用法

    java日期类的用法 不管你是处理财务交易还是计划着下一步的行动,你都要知道怎样在Java中建立,使用和显示日期.这需要你简单的查阅一下相应类的API参考:一个日期可以创建3个相关类的对象.这篇文章告 ...

  9. java中math类的作用_Java开发知识之Java的数字处理类Math类

    Java开发知识之Java的数字处理类Math类 一丶Java.text.DecimalFormat类与NumberFormat类 首先 Java.text.DecimalFormat指的是Decim ...

最新文章

  1. IOS开发笔记2-C语言基础复习
  2. c#oracle数据库操作类,Oracle数据库操作类(c#)
  3. IOS开发基础之屏幕组件适配添加约束
  4. 利用函数wavread对语音信号进行采样_AI大语音(一)——语音识别基础(深度解析)...
  5. _int64_在Linux对应对文件,linux下32位机与64位机基本数据类型长度对比
  6. MultiMedia eXtensions - MMX:第一套应用于英特尔 80x86 指令集的 SIMD 扩展
  7. UNSW-论文以及博士论文下载
  8. tomcat 不支持put 高版本_Tomcat-远程代码执行漏洞
  9. java考勤表导出_考勤打卡机导出的excel考勤时间表如何生成实用的考勤表
  10. 数据结构-哈夫曼编码例题
  11. ODAC安装配置与使用详解
  12. dp和px,那些不得不吐槽的故事——Android平台图
  13. Echarts使用之-散点图(各国人均寿命与GDP关系演变)
  14. 【Linux】文件及目录
  15. ea连接远程oracle报错,ea数据库连接错误
  16. 和马斯克Zoom开个会,竟是AI换脸,GitHub 4000星项目登上热榜​
  17. android tif浏览器,简单三步评测几款TIFF格式图片浏览器
  18. Codeforces Round #727 (Div. 2)2021.6.20
  19. 医学图像算法工程师面经
  20. Word文档Xml格式精简版

热门文章

  1. [myeclipse] 官方中文网站
  2. 如何在计算机中找到桌面这个项,怎样找到“计算机管理”这项菜单?
  3. C语言之指针本身地址与指针向的地址(四十四)
  4. Android.mk调用bin/shell
  5. 高通平台音频调试常见问题点归纳
  6. prolog初学语法结构
  7. windows Server 2016 开启远程登录和多用户同时远程登录
  8. java web网上书城_javaweb网上书城项目
  9. rust如何加好友steam_《Rust》加入女性建模 角色性别将由STEAM账号决定
  10. 分布式和微服务_太难了!阿里三面凉透~ Spring+高并发+算法+分布式微服务等等一个都没讲不清...