`
welcomezhang
  • 浏览: 16867 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

java回顾之面向对象一:封装、继承、多态

阅读更多

类(class)是一批对象(object)的抽象,对象是类的实例(instance)。

 

对事物的描述通常包括两方面:一个是属性,一个是行为。

成员变量其实就是类中的属性。成员方法就是类中的行为。

  • 构造器
  • 成员变量
  • 方法

 

成员变量 vs局部变量

 

  • 成员变量定义在类中,整个类都可以访问;局部变量定义在函数中,语句局部代码快中,只在所属的区域有效。
  • 成员变量存在于堆内存的对象中;局部变量存在于栈内存的方法中。
  • 成员变量随着对象的创建而存在,随着对象的小时而消失;局部变量随着所属区域的执行而存在,随着所属区域的结束而释放。
  • 成员变量都有默认的初始化值;局部变量没有默认的初始化值,必须先定义,赋值,才能使用。

 

 

静态方法:可以直接通过类来访问静态方法;静态方法的操作可以不依靠对象;静态方法上不能使用this关键字,也不能操作非静态属性和方法。

成员变量
 vs 静态变量
①两个变量的生命周期不同

  • 成员变量随着对象的创建而存在,随着对象的回收而释放。
  • 静态变量随着类的加载而存在,随着类的消失而消失。

②两种变量的调用方式不同

  • 成员变量只能被对象调用。
  • 静态变量可以被对象调用,还能被类名调用。

③成员变量也称实例变量;静态变量也称类变量。

④成员变量数据存储在堆内存的对象中,所以也叫对象的特有数据;静态变量数据存储在方法区(共享数据),所以也叫对象的共享数据。 

 

面向对象三大特征

  • 封装(encapsulation
  • 继承(extend
  • 多态(polymorphism

 

封装

隐藏实现细节,让使用者只能通过指定方法来访问数据。

default修饰符

note:default这个修饰符经常使用,但是对它的访问控制级别经常模糊不清。


 

 

继承

1.继承的概念
当多个类存在相同属性和行为时,将这些类抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只需要继承那个类即可。关键字extends表明正在构造的新生类派生于一个已存在的类。已存在的类被称为超类(superclss)、基类(base
 class)或父类(parent class);新类被称为子类(subclass)。“is-a”关系是继承的一个明显特征。

父类(基类、超类)子类

 

2.通过extends关键字来实现类与类的继承,如:class 子类名 extends 父类名{}

 

重写overridevs重载(overload

重写:子父类中,子类重写了父类的方法。

重载:同一个类,出现方法名称相同、参数列表不同的情况

二者除了都是发生在同名方法之间,没有其他相似之处。

 

继承vs组合

集成:是(is a),适合用在2个类之间有一般、特殊的关系

组合:有(has a)的关系,适合用在2个类之间有明确的整体、部分的关系

 

this vs super

this:代表的对象是当前类。

super:用于在子类中调用父类被覆盖的方法

 

Final阻止继承

final关键字是最终的意思,可以修饰类,成员变量,成员方法。

  • final关键字修饰的类不可以被继承。
  • final修饰的方法不可以被覆盖。
  • final修饰的变量是一个常量,只能被覆盖。

 

多态

多态分两种:

(1)  编译时多态(设计时多态):方法重载。

(2)  运行时多态:Java运行时系统根据调用该方法的实例的类型来决定选择调用哪个方法则被称为运行时多态。(我们平时说得多的事运行时多态,所以多态主要也是指运行时多态)

 

相同类型的变量,调用同一个方法时呈现出多种不同的行为特征。从一定角度来看,封装和继承几乎都是为多态而准备的。实现多态的技术称为:动态绑定(dynamic binding),是指在执行期间判断所引用对象的实际类型,根据其实际的类型调用其相应的方法。

 

多态:父类型的引用可以指向子类型的对象。

比如 Parent p = newChild();

当使用多态方式调用方法时,首先检查父类中是否有该方法,如果没有,则编译错误;
如果有,再去调用子类的该同名方法

 

多态存在的三个必要条件

 

  • 要有继承
  • 要有重写
  • 父类引用指向子类对象

 

 

类型转换

  • 向上转型(upcasting):子类型转为父类型,无须任何类型转换。
  • 向下转型(downcasting):父类型转为子类型,必须要使用强制类型转换。
    instanceof、类型转换(typevariable

 

分享到:
评论

相关推荐

    《java面向对象程序设计-继承和多态》教案.doc

    第四章 面向对象的概念和 Java 实现-2 回顾 类是具有相同属性和行为的一组对象的 集合 , 对象是类的实例 封装是隐藏对象实现细节的过程,以便不让用户看到实现的细节 类可用Class 来定义,类的变量和方法可被该类的...

    Java面向对象知识点梳理(思维导图)

    这个资源是一个Java面向对象知识点的思维导图,它涵盖了Java中面向对象编程的核心概念和重要知识点。导图中包含了类、对象、继承、多态、封装等基本概念,同时也包括了接口、抽象类、异常处理、泛型等高级特性。这个...

    Java面向对象知识点的思维导图

    这个资源是一个Java面向对象知识点的思维导图,它涵盖了Java中面向对象编程的核心概念和重要知识点。导图中包含了类、对象、继承、多态、封装等基本概念,同时也包括了接口、抽象类、异常处理、泛型等高级特性。这个...

    python面向对象day04.txt

    面向对象语言的特征: 封装(类和私有变量) 继承 多态(python只能实现动态) issubclass(cls, 类或元组) 多继承 一个子类继承自两个或两个以上的父类 类的 __mro__ 属性绑定类的元组 用来记录方法的查找顺序 ...

    面向对象程序设计

    面向对象、Java基础知识回顾、封装、继承、多态、重载、SSD3

    Java领域基础部分JavaSE笔记

    面向对象编程(OOP)基础(类,对象,继承,封装,多态) 异常处理 泛型 基本的输入输出(I/O) 线程和并发 Java集合框架(List, Set, Map等) 适用人群 初学者:对编程感兴趣,希望从基础学起的新手。 在校学生:...

    项目综合案例采用两年所学的内容

    学的课程有java初级 Java高级 java的面向对象 java的面向过程 java的封装 继承 多态 jdbc JavaScript初级内容 Html Css 这个学期开始前端的第二部分 jquery的基础操作 jquery的选择器 事件 效果 Css3 Html5新的属性 ...

    Java入门1·2·3:一个老鸟的Java学习心得.PART3(共3个)

    对Java语言的每个语法都提供了一个或多个例程讲解 大量使用流程图表示程序的执行过程,使用结构图表示程序的内部状态 每章最后都给出了典型的练习题,让读者及时练习,巩固提高,并提供了参考答案 目录 第1篇 ...

    JavaSE基础学习笔记

    面向过程 &面向对象 什么是面向对象 方法回顾和加深 对象的创建分析 类与对象的关系 创建与初始化对象 小结 对象的内存分析 小结 1、类与对象 2、方法 3、对象的引用 4、属性:字段Field 成员变量 5、对象的创建和...

    JAVA入门1.2.3:一个老鸟的JAVA学习心得 PART1(共3个)

    对Java语言的每个语法都提供了一个或多个例程讲解 大量使用流程图表示程序的执行过程,使用结构图表示程序的内部状态 每章最后都给出了典型的练习题,让读者及时练习,巩固提高,并提供了参考答案 目录 第1篇 ...

    JAVA基础课程讲义

    第三章 JAVA面向对象程序开发 52 编程语言发展史 52 类和对象是如何产生发展的?如何进化的? 52 面向对象思想初步(OOP初步Object Oriented Programming) 53 面向对象编程的语言的三大特征简介 56 对象和类的概念 56 ...

    C#微软培训资料

    第九章 面向对象的程序设计 .101 9.1 面向对象的基本概念.101 9.2 对象的模型技术 .103 9.3 面向对象的分析 .105 9.4 面向对象的设计 .107 9.5 小 结 .110 第十章 类 .112 10.1 类 的 声 明 .112 ...

Global site tag (gtag.js) - Google Analytics