Java是一门面向对象的语言解读
2020-06-21 00:01
18 查看
Java语言面向对象解读
一、Java面向对象的主线分析
1. 三条主线
- Java类及类的成员:属性、方法、构造器;代码块、内部类
- 面向对象的三大特征:封装性、继承性、多态性、(抽象性)
- 其它关键字:this、super、static、final、abstract、interface、package、import等
2. 注意
- 面向过程(POP)(Procedure Oriented Programming):强调的是功能行为,以函数为最小单位,考虑怎么做。
- 面向对象(OOP)(Object Oriented Programming):强调具备了功能的对象,以 类/对象 为最小单位,考虑谁来做。
二、面向对象
1. 面向对象两个要素
- 类(class):对一类具有相同属性和行为的事或物的描述,是抽象的、概念上的定义
- 对象(object):是实际存在的该类事物的每个个体,因而也称为实例(instance)
思想概述;程序员从面向过程的执行者转化成了面向对象的指挥者。
2.完成一个项目或功能的(面向对象分析方法分析问题的)思路和步骤
2.1 步骤
- 根据问题需要,选择问题所针对的现实世界中的实体。
- 从实体中寻找解决问题相关的属性和功能,这些属性和功能就形成了概念世界中的类。
- 把抽象的实体用计算机语言进行描述,形成计算机世界中类的定义。即借助某种程序语言,把类构造成计算机能够识别和处理的数据结构。
- 将类实例化成计算机世界中的对象。对象是计算机世界中解决问题的最终工具。
2.2 注意
- 面向对象程序设计的重点是类的设计;设计类,就是设计类的成员。
- Java代码世界是由诸多个不同功能的类构成的。
三、Java 类及类的成员
1. 基本成员
- 属性 == (Field ) == 域、 字段 :对应类中的成员变量:静态特征;全局变量;
- 行为、方法 ==(Method) == 函数、过程 :对应类中的成员方法:动态特征;
2.类的语法格式
修饰符 class 类名 {
属性声明;
方法声明;
}
注意:类的正文要用{ }括起来,表征其作用域。
3.创建Java自定义类的步骤
- 定义类(考虑修饰符、类名)
- 编写类的属性(考虑修饰符、属性类型、属性名、初始化值)
- 编写类的方法(考虑修饰符、返回值类型、方法名、形参等)、
4.类的分类
- 实体类(存储数据的类):实体类的写法是固定的。
类的方法体内,包含属性,一个显示声明的无参构造方法;和根据业务要求的带参构造方法。
每一个属性都对应着2个方法,setter和getter。一个用来赋值,一个取值。 - 业务类(处理数据的类):
5.类的访问机制:
- 在一个类中的访问机制: 类中的方法可以直接访问类中的成员变量 。
例外:static 方法访问非 static ,编译不通过 。 - 在不同类中的访问机制: 先创建要访问类的对象,再用对象访问类中定义的成员 。
四、new (创建)对象及使用
1. 面向对象思想的实现
1.1 实现思路步骤
- 创建类,设计类的成员。见 三、4 。
- 创建类的对象,new 一个对象。(类的实例化 = 实例化类)
格式:类名 对象名 = new 构造方法(参数列表); - 通过“对象.(可见)属性”或“对象.(可见)方法”调用对象的结构
注意:如果创建了一个类的多个对象,则每个对象都独立的拥有一套类的属性。(非static的)
意味着,如果我们修改一个对象的属性a,则不影响另外一个对象属性a的值。
1.2 构造器(构造方法)解读
- 构造方法语法格式: public 方法名(与类名同名)(参数列表){
方法体;
}
参数列表为空时,称为无参构造(若类中没有定义任何构造方法,系统自动提供无参构造);
反之,带参构造(若类中定义任何构造方法,系统不再提供无参构造,如需使用无参构造,需显示声明无参构造)。 - 构造方法的功用:
1.创建对象;
2.类初始化,给类的属性第一次赋值。构造方法对于同一个对象,只能调用一次。
注意:调用方式,new(惟一),没有返回值类型。(识别标志:与类同名,没有返回值类型)
五、类的内存解析
1.内存空间
- 堆(Heap):所有的对象实例以及数组都要在堆上分配。
(此内存区域的唯一目的就是存放对象实例,几乎所有的对象实例都在这里分配内存。) - 栈(Stack):是指虚拟机栈。用于存储局部变量等。方法执行完,自动释放。
局部变量表存放了编译期可知长度的各种基本数据类型(boolean、byte、char 、 short 、 int 、 float 、 long 、double)、对象引用(reference类型,它不等同于对象本身,是对象在堆内存的首地址)。 - 方法区(Method Area):用于存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据。
注意:引用类型的变量,只可能存储两类值:null 或 地址值(含变量的类型)。
2.JVM内存结构
- 编译完源程序后生成一个或多个字节码文件。
- 使用JVM中类的加载器和解释器对生成的字节码文件进行解释运行。
意味着,需要将字节码文件对应的类加载到内存中,涉及到内存解析。
六、特殊
1.匿名对象
1.定义
定义:我们也可以不定义对象的句柄,而直接调用这个对象的方法。这样的对象叫做匿名对象。
(我们创建的对象,没有显式的赋给一个变量名。即为匿名对象)
例:new Person().shout();
2.使用场景
- 如果对一个对象只需要进行一次方法调用,那么就可以使用匿名对象。
- 我们经常将匿名对象作为实参传递给一个方法调用。
特征:匿名对象只能调用一次。
七、理解“万事万物皆对象”
- 在Java语言范畴中,我们都将功能、结构等封装到类中,通过将类实例化为对象,用对象来调用具体的功能、结构Scanner,String等
文件:File; 网络资源:URL - 涉及到Java语言与前端Html、后端的数据库交互时,前后端的结构在Java层面交互时,都体现为类、对象。
八、代码展示
/* 要求: * (1)创建ObjectOrientedProgramming类的对象,设置该对象的name、age和sex属性,调用study方法, * 输出字符串“studying”,调用showAge()方法显示age值, * 调用addAge()方法给对象的age属性值增加2岁。 * (2)创建第二个对象,执行上述操作,体会同一个类的不同对象之间的关系。 */ public void ObjectOrientedProgrammingTest() { // 类的实例化。即 new 一个属于类对象。用以操作类的属性和方法。 ObjectOrientedProgramming p1 = new ObjectOrientedProgramming(); //调用(操作)类的属性并赋值。 p1.name = "Tom"; p1.age = 18; p1.sex = 1; //调用(操作)类的方法。 p1.study(); p1.showAge(); int newAge = p1.addAge(2); System.out.println(p1.name + "的新年龄为:" + newAge); System.out.println(p1.age);//20 //************************* ObjectOrientedProgramming p2 = new ObjectOrientedProgramming(); p2.showAge(); //0 p2.addAge(10); p2.showAge(); //10 p1.showAge(); }
class InstanceTest { public static void main(String[] args) { Phone p = new Phone(); //p = null; System.out.println(p); p.sendEmail(); p.playGame(); //匿名对象 // new Phone().sendEmail(); // new Phone().playGame(); new Phone().price = 1999; new Phone().showPrice();//0.0 PhoneMall mall = new PhoneMall(); // mall.show(p); //匿名对象的使用 mall.show(new Phone()); } } class PhoneMall{ public void show(Phone phone){ phone.sendEmail(); phone.playGame(); } } class Phone{ double price;//价格 public void sendEmail(){ System.out.println("发送邮件"); } public void playGame(){ System.out.println("玩游戏"); } public void showPrice(){ System.out.println("手机价格为:" + price); } }
相关文章推荐
- 黑马程序员——Java语言--面向对象(一)
- java语言基础(35)——面向对象(final关键字)
- Java语言中的面向对象特性:封装、继承、多态,面向对象的基本思想(总结得不错)
- Java语言面向对象的编程思想
- 面向对象:找人代劳的Java语言(1)——初识Java、搭建Java开发环境、开发第一个Java程序
- java学习3-学习一门语言一般知识点
- 解读:学习JAVA语言的十个误区
- Java 面向对象的语言
- Java语言基础面向对象(多态)
- Java对文件读写的操作详解 - pwh309315228的博客 Java中文件读写操作的作用是什么? 回答这个问题时应该先想到的是Java只是一门语言,我们的一种使用工具而已,这样答案就明晰了,就是将外来的各种数据写入到某一个文件中去,用以保存下来;或者从文...
- Java一种面向对象的语言
- 【Java基础】第三讲 Java语言中的面向对象特性
- 面向对象:找人代劳的Java语言(2)——变量、数据类型与运算符
- 面向对象语言之JAVA(类与对象,面向对象的特征,面向对象设计思想的要点)
- (面向对象、JAVA语言特性、继承、抽象类、接口、枚举、异常处理、IO流)——阶段性复习
- 黑马程序员_Java语言_面向对象_内部类
- java script 面向对象的弱语言
- 面向对象:找人代劳的Java语言(3)——if选择结构、if-else选择结构、多重if选择结构、嵌套if选择结构、switch选择结构
- day 8:Java语言中的面向对象2
- Java语言基础-面向对象(包)