Java面向对象小结

1  对象    

1.1  什么是对象?

    首先要说明一点,对象不是java的,事实上他只是一种概念,一种用于解决问题的程序设计的思想方法。要理解对象就 必须得要和面向对象结合起来。在面向对象中把某一类事物所共有的属性和行为抽象出来之后就形成了一个类。而类的一个实际的例子就叫做对象。所以从上可以看 出类和对象之间存在着这样一种关系:类是具有共同的属性名称和行为的一组对象的抽象,而对象则是一个类的真实的例子。

    类是现实世界或思维世界中的实体在计算机中的反映,它将数据以及这些数据上的操作封装在一起。

    类描述了具有相同特性(数据元素、状态变量)和行为(对数据元素、状态变量的操作)的对象集合,如果我需要某个具有一定功能的工具,那么我可自定义这个类,里面有我需要的数据,还有让这个类提供的功能。

对象是具有类类型的变量。类和对象是面向对象编程技术中的最基本的概念。类是对象的抽象,而对象是类的具体实例。类是抽象的,不占用内存,而对象是具体的,占用存储空间。类是用于创建对象的蓝图,它是一个定义包括在特定类型的对象中的方法和变量的软件模板。

     JAVA是一种面向对象的程序设计语言,对象是由类抽象出来的,所有的问题都是通过对象来处理,对象可以操作类的属性和方法来解决问题,所以了解对象的产生、操作和消亡是十分必要的。对象可以认为是在一类事物中抽象出某一个特例,通过这个特例来处理这类事物出现的问题,在Java语言中通过new操作符来创建对象。

1.2  对象的创建、消亡  -----详见<深入理解Java虚拟机>

1.3  对象和对象引用
    如下表达式:  A a1 = new A();    它代表A是类,a1是引用,a1不是对象,new A()才是对象,a1引用指向new A()这个对象。

    在JAVA里,“=”不能被看成是一个赋值语句,它不是在把一个对象赋给另外一个
对象,它的执行过程实质上是将右边对象的地址传给了左边的引用,使得左边的引用指向了右边的对象。JAVA表面上看起来没有指针,但它的引用其实质就是一
个指针,引用里面存放的并不是对象,而是该对象的地址,使得该引用指向了对象。在JAVA里,“=”语句不应该被翻译成赋值语句,因为它所执行的确实不是
一个赋值的过程,而是一个传地址的过程,被译成赋值语句会造成很多误解,译得不准确。

    再如:  A a2;  它代表A是类,a2是引用,a2不是对象,a2所指向的对象为空null;

    再如:  a2 = a1;  它代表,a2是引用,a1也是引用,a1所指向的对象的地址传给了a2(传址),使得a2和a1指向了同一对象。

    综上所述,可以简单的记为,在初始化时,“=”语句左边的是引用,右边new出来的是对象。
         在后面的左右都是引用的“=”语句时,左右的引用同时指向了右边引用所指向的对象。  再所谓实例,其实就是对象的同义词。

2  Java三大特性

2.1  Java继承

    继承是面向对象最显著的一个特性。继承是从已有的类中派生出新的类,新的类能吸收已有类的数据属性和行为,并能扩展新的能力。Java继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以增加新的数据或新的功能,也可以用父类的功能,但不能选择性地继承父类。这种技术使得复用以前的代码非常容易,能够大大缩短开发周期,降低开发费用。

    继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类。继承可以理解为一个对象从另一个对象获取属性的过程。如果类A是类B的父类,而类B是类C的父类,我们也称C是A的子类,类C是从类A继承而来的。在Java中,类的继承是单一继承,也就是说,一个子类只能拥有一个父类。继承中最常使用的两个关键字是extends(IS-A,是一个什么东西)和implements(Has-A,有一个什么功能)。这两个关键字的使用决定了一个对象和另一个对象是否是IS-A(是一个)关系。通过使用这两个关键字,我们能实现一个对象获取另一个对象的属性。所有Java的类均是由java.lang.Object类继承而来的,所以Object是所有类的祖先类,而除了Object外,所有类必须有一个父类。通过过extends关键字可以申明一个类是继承另外一个类而来的,通过使用关键字extends,子类可以继承父类所有的方法和属性,但是无法使用 private(私有) 的方法和属性。我们通过使用instanceof 操作符,能够确定    子类 IS-A 父类。

2.2  Java多态

2.3  Java封装

2.4  Java extends和implements使用异同点分析

时间: 2024-10-14 00:42:34

Java面向对象小结的相关文章

java面向对象编程(1)-构造方法(函数)

1.类的构造方法介绍 什么是构造方法呢?在回答这个问题之前,我们来看一个需求:我们在创建人类的对象时,是先把一个对象创建好后,再给他的年龄和姓名属性赋值,如果现在我要求,在创建人类的对象时,就直接指定这个对象的年龄和姓名,该怎么做?答案是在定义类的时候,定义一个构造方法即可. 构造方法是类的一种特殊的方法,它的主要作用是完成对新对象的初始化.它有几个特点: 1.方法名和类名相同 2.没有返回值 3.在创建一个类的新对象时,系统会自动的调用该类的构造方法完成对新对象的初始化. 特别说明:一个类可以

14.6面向对象小结

面向对象小结 1.如何创建类class 类名:pass 2.创建方法构造方法,init(self,arg)obj = 类('a1')普通方法obj = 类('xxx')obj.普通方法名() 3.面向对象三大特性之一:封装 class Bar: def __init__(self, n,a): self.name = n self.age = a self.xue = 'o' b1 = Bar('a1', 123) b2 = Bar('a2', 456) 4.适用场景:如果多个函数中有一些相同参

浅显回顾 Java 面向对象的最后方面的知识

今天主要回顾一下 Java 面向对象的最后一部分的知识,算是对面向对象的一个总结了吧! 先来讲两个关键字吧! 1. abstract 如果一个类的所有子类都对这个类中的某个方法做了重写,那么这个时候这个类中的对应方法可以不定义方法体,需要用abstract修饰方法,从而成为一个抽象方法.抽象方法所在的类必须是抽象类. 抽象类不能创建对象. --- 抽象方法一定是抽象类,但抽象类中不一定有抽象方法. 抽象类一定不是最终类,因为最终类不能被继承. 注意:任何一个类都有构造方法 抽象方法没有方法体,一

2062326 齐力锋 实验四《Java面向对象程序设计Android开发》实验报告

北京电子科技学院(BESTI) 实 验 报 告 课程: 程序设计与数据结构  班级: 1623  姓名: 齐力锋 学号: 20162326 成绩: 指导教师: 娄嘉鹏/王志强 实验日期: 2017年5月26日 实验密级:非密级 预习程度: 优良 实验时间: 2 Hours 仪器组次: 必修/选修: 必修 实验序号: 04 实验名称:Java面向对象程序设计Android开发 实验内容 1.Android Stuidio的安装测试: 参考<Java和Android开发学习指南(第二版)(EPUBI

java面向对象的核心思想

Java面向对象-抽象类与接口 1.Java final关键字的使用 package edu.tongji.fni; /*final关键字 * 1.final关键字在java中被称为完结器,表示最终的意思 * 2.final能声明类.方法.属性: * 使用final声明的类不能被继承 * 使用final声明的方法不能被重写 * 使用final声明的变量变成常量,常量是不可以被修改的 */ class People{ //前面加了final下面的类会报错 public void tell(){ }

JavaSE入门学习21:Java面向对象之接口(interface)(二)

一接口实现的多态 在上一篇博文:JavaSE入门学习20:Java面向对象之接口(interface)(一)中提到了接口的实现存在多态性,那么 这一篇主要就要分析接口实现的多态. 实例一 Test.java源文件代码: public class Test{ public static void main(String[] args){ //实现接口Singer Singer s1 = new Student("Amy"); s1.sing(); s1.sleep(); s1.study

第5篇-JAVA面向对象Ⅰ

第5篇-JAVA面向对象Ⅰ 每篇一句 :面向对象面向君,不负代码不负卿 初学心得: 代码虐我千百遍,我待代码如初恋 (笔者:JEEP/711)[JAVA笔记 | 时间:2017-04-03| JAVA面向对象 Ⅰ] 1.JAVA作为一种面向对象语言,具有以下基本概念: ● 多态 ● 继承 ● 封装 ● 抽象 ● 类 ● 对象 ● 实例 ● 方法 ● 重载 2.面向对象 什么是面向对象?: 面向对象是一种编程思想 通俗的说:面向对象是一种思考问题的思维方式 为什么使用面向对象以及它的作用 计算机语

《Java面向对象编程第二版》今年出版以来获得读者一致好评。

<Java面向对象编程第一版>自2016年出版以来,承蒙读者们的厚爱,至今已经重印了二十多次,成为国内Java领域里的经典Java技术宝典.在当当网上获得了1500多条好评: http://product.dangdang.com/9186890.html?point=comment_point 应广大读者的要求,为第一版进行了升级,第二版融合了最新的Java8的语言特性,它继续为Java开发人员们提供丰富全面的技术支持和帮助.在京东网上读者们对第二版的好评如潮,一致认为这是Java开发人员必

java面向对象 泛型

这个第一篇知识梳理的博客,希望我可以坚持下去将知识进行总结. 这是在极客学院里看到的视频,目录如下,蛮清晰的.然后我将视频中所说再记忆下. java面向对象之泛型:认识泛型 Java SE 1.5的新特性,泛型的本质是参数化类型,可以代表任何数据类型. java面向对象之泛型:构造函数中使用 class Gen<T>{ private T value; Gen(T value){//构造函数中就泛型就不需要用尖括号了 this.value=value; } public void setVal