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

面向对象核心 封装 继承 多态

阅读更多
封装:使对象的属性尽可能私有,对象的方法尽可能的公开。用private表示此成员属性为该类的私有属性。

Public表示该属性(方法)公开;
Private表示该属性(方法)为只有本类内部可以访问(类内部可见)。
(想用private还要用set和get方法供其他方法调用,这样可以保证对属性的访问方式统一,并且便于维护访问权限以及属性数据合法性)
如果没有特殊情况,属性一定私有,方法该公开的公开。
如果不指明谁调用方法,则默认为this。
区分实例变量和局部变量时一定要写this。

继承:
父类(SuperClass)和 子类(SonClass)。
父类的非私有化属性和方法可以默认继承到子类。
Class Son extends Father{
}
而如果父类中的私有方法被子类调用的话,则编译报错。

父类的构造方法子类不可以继承,更不存在覆盖的问题。(非构造方法可以)
如果子类访问父类的构造方法,则在编译的时候提示访问不到该方法。
JAVA中不允许多继承,一个类有且只有一个父类(单继承)。
JAVA的数据结构为树型结构,而非网状。(JAVA通过接口和内部类实现多继承)

方法的覆盖(overriding)
方法的重载并不一定是在一个类中:子类可以从父类继承一个方法,也可以定义一个同名异参的方法,也称为overloading。
当子类从父类继承一个无参方法,而又定义了一个同样的无参方法,则子类新写的方法覆盖父类的方法,称为覆盖。(注意返回值类型也必须相同,否则编译出错。)
如果方法不同,则成重载。

对于方法的修饰词,子类方法要比父类的方法范围更加的宽泛。
父类为public,那么子类为private则出现错误。
之所以构造方法先运行父类再运行子类是因为构造方法是无法覆盖的。
以下范围依次由严到宽:
private :本类访问;
default :表示默认,不仅本类访问,而且是同包可见。
Protected:同包可见+不同包的子类可见
Public :表示所有的地方均可见。

当构造一个对象的时候,系统先构造父类对象,再构造子类对象。
构造一个对象的顺序:(注意:构造父类对象的时候也是这几步)
① 递归地构造父类对象;
② 顺序地调用本类成员属性赋初值语句;
③ 本类的构造方法。

Super()表示调用父类的构造方法。
Super()也和this一样必须放在第一行。
This()用于调用本类的构造方法。
如果没有定义构造方法,那么就会调用父类的无参构造方法,即super()。

要养成良好的编程习惯:就是要加上默认的父类无参的构造方法。
思考:可是如果我们没有定义无参的构造方法,而在程序中构造了有参的构造方法,那么如果方法中没有参数,那么系统还会调用有参的构造方法么?应该不会。

多态:多态指的是编译时类型变化,而运行时类型不变。
多态分两种:
① 编译时多态:编译时动态重载;
② 运行时多态:指一个对象可以具有多个类型。

对象是客观的,人对对象的认识是主观的。
例:
Animal a=new Dog();查看格式名称;
Dog d=(Dog)a。声明父类来引用子类。
(思考上面的格式)

运行时多态的三原则:(应用时为覆盖)
1、 对象不变;(改变的是主观认识)
2、 对于对象的调用只能限于编译时类型的方法,如调用运行时类型方法报错。
在上面的例子中:Animal a=new Dog();对象a的编译时类型为Animal,运行时类型为dog。
注意:编译时类型一定要为运行时类型的父类(或者同类型)。
对于语句:Dog d=(Dog)a。将d强制声明为a类型,此时d为Dog(),此时d就可以调用运行时类型。注意:a和d指向同一对象。
3、 在程序的运行时,动态类型判定。运行时调用运行时类型,即它调用覆盖后的方法。

关系运算符:instanceof
a  instanceof Animal;(这个式子的结果是一个布尔表达式)
a为对象变量,Animal是类名。
上面语句是判定a是否可以贴Animal标签。如果可以贴则返回true,否则返回false。
在上面的题目中: a instanceof Animal返回 True,
                 a instanceof Dog也返回 True,
instanceof用于判定是否将前面的对象变量赋值后边的类名。
Instanceof一般用于在强制类型转换之前判定变量是否可以强制转换。

如果Animal a=new Animal();
Dog d=Dog()a;
此时编译无误,但运行则会报错。

Animal a=new Dog()相当于下面语句的功能:
Animal a=getAnimal();
Public static Animal.getAnimal;
Return new Dog();

封装、继承、多态为面向对象的三大基石(特性)。

运行时的动态类型判定针对的是方法。运行程序访问的属性仍为编译时属性。

Overloading针对的是编译时类型,不存在运行时的多态。

习题:建立一个shape类,有circle和rect子类。
Shape类有zhouchang()和area()两种方法。
(正方形)squ为rect子类,rect有cha()用于比较长宽的差。

覆盖时考虑子类的private及父类的public(考虑多态),之所以这样是避免调用A时出现实际调用B的情况。而出现错误。
11.29下午讲的是教程上的Module6
Module6-7包括:面向对象高级、内部类、集合、反射(暂时不讲)、例外。
面向对象高级、集合和例外都是面向对象的核心内容。
分享到:
评论

相关推荐

    Educoder题目:Java面向对象 - 封装、继承和多态答案解析.md

    Educoder题目:Java面向对象 - 封装、继承和多态答案解析

    Educoder题目:Java面向对象 - 封装、继承和多态的综合练习答案解析.md

    Educoder题目:Java面向对象 - 封装、继承和多态的综合练习答案解析

    java面向对象三要素封装继承和多态源码

    java面向对象三要素封装继承和多态源码java面向对象三要素封装继承和多态源码java面向对象三要素封装继承和多态源码java面向对象三要素封装继承和多态源码java面向对象三要素封装继承和多态源码java面向对象三要素...

    java总结,基础语法,面向对象,封装继承多态,异常

    java总结,基础语法,面向对象,封装继承多态,异常

    java基础继承封装多态

    本资源摘要信息将对 Java 基础知识点进行总结,涵盖继承、封装、多态等概念,并对面向对象的设计、数据库设计模式等进行讲解。 继承 继承是 Java 中的一种机制,允许一个类继承另一个类的属性和方法。继承的语法是...

    c++ 的封装继承多态例子

    在C++编程语言中,封装、继承和多态是面向对象编程(OOP)的三大核心概念。下面将深入解析这三个关键概念,并结合"cppgood"这个可能包含示例代码的压缩包,来阐述它们在实际编程中的应用。 **封装** 是面向对象编程...

    Java 面向对象(继承、多态).ppt

    面向对象的概念 掌握类的继承、方法重写、super关键字的使用、final关键字 熟悉面向对象继承和多态的概念

    JAVA面向对象基础测试题-继承-封装-多态等测试题.docx

    根据给定文件的信息,我们可以总结出以下几个面向对象的基础知识点,并结合具体的题目来进行解析: ### 面向对象基础知识概述 面向对象编程(Object-Oriented Programming, OOP)是一种编程范式,它将数据和处理...

    Java面向对象编程(封装/继承/多态)实例解析

    Java 面向对象编程(封装/继承/多态)实例解析 Java 面向对象编程是一种编程范式,它强调对象之间的交互和继承关系。在 Java 中,面向对象编程主要体现在三大特征:封装、继承和多态。 封装是指隐藏对象的内部细节...

    面向对象封装继承和多态.docx

    本文档总结了面向对象编程的基础知识点,包括封装、继承、多态、集合等内容。以下是对每个知识点的详细解释。 类和对象 * 类是抽象的概念,java 中面向对象编程就是面向类来编程。 * 类是具有相同属性和行为的一个...

    使用C语言实现封装,继承,多态等面向对象的特性

    使用C语言实现封装,继承,多态等面向对象的特性使用C语言实现封装,继承,多态等面向对象的特性使用C语言实现封装,继承,多态等面向对象的特性使用C语言实现封装,继承,多态等面向对象的特性使用C语言实现封装,...

    C#做的计算器,利用类的封装继承多态。。

    在C#编程中,"C#做的计算器,利用类的封装继承多态"是一个典型的面向对象编程示例。这个计算器项目展示了如何应用C#的核心概念,如类、封装、继承和多态,来构建一个实际的软件应用。下面将详细解释这些知识点。 1....

    java面向对象的基本知识,封装继承多态等

    java面向对象的基本知识,封装继承多态等

    类和对象、对象和封装、继承、多态、异常等教学...

    本教程针对初学者,详细讲解了类和对象、对象和封装、继承、多态以及异常处理等关键面向对象的知识点。 1. **类和对象**: - **类**:类是Java中的蓝图,它定义了一组具有相同属性和行为的对象。在"第一章 类和...

    Java封装继承多态实例以及文件流操作

    在这个实例中,我们将探讨四个关键概念:封装、继承、多态以及文件流操作,这些都是Java中的核心特性,也是理解OOP(面向对象编程)的基础。 首先,**封装**是面向对象编程的核心理念之一,它涉及将数据和方法捆绑...

    C# 一个完整的类 面向对象三大特性 封装 继承 多态 的示例

    C# 一个完整的类 面向对象三大特性 封装 继承 多态 的示例 封装通过私有字段和公共方法来实现对数据的访问控制。 继承通过派生类Student继承自Person类,获得了Person类的所有属性和方法,并在此基础上扩展了自己的...

    OC封装继承多态演示

    面向对象编程(Object-Oriented Programming,简称OOP)是软件开发中的一种核心概念,它在...这个"OC封装继承多态演示"的示例项目,无疑是一个很好的学习资源,可以帮助开发者更深入地理解面向对象编程在实践中的应用。

    用一个示例来说明C#中的继承、封装和多态

    在C#编程语言中,继承、封装和多态是面向对象编程(OOP)的三大核心概念。这些特性使得代码更加灵活、可复用且易于维护。下面将通过一个具体的示例来阐述这三个概念。 首先,让我们理解一下这三个概念的基本含义: ...

    面向对象编程二继承封装和多态2022优秀文档.ppt

    面向对象编程是现代软件开发中的核心概念,它主要由三个基本特征构成:继承、封装和多态。这些特性使得代码更加模块化、可复用和易于维护。 **继承(Inheritance)** 继承是面向对象编程的一个关键特性,它允许一个...

    9、Java面向对象之继承和多态作业题[收集].pdf

    在Java编程语言中,面向对象是其核心特性之一,它包括了封装、继承和多态等概念。这里的作业题主要涉及到了继承和多态这两个面向对象的重要知识点。 首先,我们来详细讲解一下**继承**。继承是面向对象设计的一个...

Global site tag (gtag.js) - Google Analytics