`
welcomezhang
  • 浏览: 17946 次
  • 性别: 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语言与面向对象程序设计第10讲(继承与多态)

    面向对象程序设计是Java语言的核心特性之一,它包括三个主要原则:封装、继承和多态。在本讲中,我们将深入探讨其中的继承与多态。 首先,回顾面向对象设计中的基本概念。封装是将数据和操作这些数据的方法捆绑在...

    面向对象Java课件

    在Java中,面向对象主要涉及三大核心概念:封装、继承和多态。封装是将数据和操作数据的方法绑定在一起,形成一个独立的单元,以提高代码的安全性和可维护性。在Java中,我们通过类来实现封装,通过private、public...

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

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

    Tedu一段Java面向对象之继承

    在Java中,面向对象的核心概念包括类(Class)、对象(Object)、封装(Encapsulation)、继承(Inheritance)、多态(Polymorphism)等。 **1. 类与对象** - **类(Class)**:是对一组具有相同属性和行为的对象...

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

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

    面向对象设计课件(JAVA)

    在Java中,面向对象设计的核心原则包括封装、继承、多态和抽象。以下是对这些关键概念的详细阐述: 1. 封装:这是面向对象设计的基础,意味着将数据(属性)和操作这些数据的方法(行为)捆绑在一起,形成一个独立...

    java 语言与 面向对象 程序设计题解及实验指导

    3. **封装**:封装是面向对象的三大特性之一,它隐藏了对象的内部实现细节,仅通过公共接口对外提供服务,增强了代码的安全性。 4. **继承**:一个类可以继承另一个类的特性,实现代码的重用。子类不仅可以拥有父类...

    python面向对象day04.txt

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

    38丨 总结回顾面向对象、设计原则、编程规范、重构技巧等知识点1

    面向对象的四个基本特性包括封装、抽象、继承和多态。 1. 封装:封装是将数据和操作数据的方法绑定在一起,只允许通过特定的接口来访问和修改数据,以保护数据的完整性。这有助于提高代码的可维护性和易用性,例如...

    Java面向对象程序设计期末复习试题(附解析)

    Java面向对象程序设计是计算机科学领域中的核心课程之一,尤其对于K12阶段的学生来说,理解和掌握这门技术至关重要。本复习试题集旨在帮助学生在期末考试前系统性地回顾和巩固Java面向对象编程的基本概念、原理及...

    面向对象程序设计

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

    北大面向对象技术

    通过封装、继承和多态等机制,面向对象技术能够更自然地模拟现实世界的复杂性,提高软件的可重用性、灵活性和可维护性。 - **封装**将对象的内部状态和实现细节隐藏起来,只提供一组对外的接口,增强了代码的安全性...

    UML面向对象设计基础

    面向对象设计不是一项孤立的技术,它建立在一系列设计原则之上,如封装、继承、多态、抽象等。这些原则指导着软件开发者如何构建出灵活、可维护和可扩展的系统。第二部分和第三部分深入探讨了这些原理,帮助读者理解...

    苏坤《面向对象》视频教程笔记

    6. **接口(Interface)**:在某些面向对象语言中,如Java,接口是一系列方法签名的集合,定义了实现该接口的类必须提供的公共方法。接口提供了一种方式,让不相关的类可以实现相同的契约,实现多态。 苏坤老师的...

    面向对象程序设计Java听课笔记

    面向对象程序设计是计算机科学中的核心概念之一,Java语言作为其典型代表,广泛应用于软件开发。浙江大学翁恺老师的Java视频课程深入浅出地讲解了这一主题,这些笔记旨在帮助我们回顾和巩固Java开发的关键知识。 1....

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

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

Global site tag (gtag.js) - Google Analytics