`
929118967
  • 浏览: 20244 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
博客专栏
Fcebf22e-9505-38db-b3f2-65fdcc3fd6a5
java开发的深入浅出
浏览量:6906
文章分类
社区版块
存档分类
最新评论

java笔记之封装、继承、重写、多态以及类型转换

 
阅读更多

前言

今天来谈谈Java中面向对象的主要的具体表现即封装,继承和多态。这是基础的重点。

正文

封装

隐藏实现细节

1)封装的步骤:

1))将属性私有化,使用private修饰符,修饰需要隐藏的方法和属性

2))提供共有的方法,访问私有属性(getter,setter)

注:

封装的目的是减少类与类的关联度

2)封装的规范:

1))修饰属性的可见度,来限制对属性的访问

2))为每个属性创建一对赋值和取值方法

3))在setter和getter方法中加入对属性的限制

3)封装的好处:

1))增加了数据的访问限制,增强了程序的安全性

2))为属性提供了一系列的规则,从而对属性起到保护的作用

3))从广义的角度上隐藏了实现细节

注:

1))方法签名的概念方法签名是方法名+参数列表

2))重载跟返回值无关

继承

事物之间存在相同的特性且存在包含关系,一个事物拥有另一个事物的特征,且具备自己的独立性。

1)语法:

extends,表名正在构建的类,派生于一个已经存在的类

注:

1))一般都是在父类中定义一般的属性和方法,让子类来继承它们。

2))一切的祖先是Object

2)继承的特性:

1))java是单继承的

2))子类继承父类中非private的属性和方法

3))子类被初始化之前,父类会先被初始化

(父类的构造器先于子类的构造器调用执行,先进行子类的构造器,却先执行父类的构造器,可使用debug来进行测试)

4))子类没显示的调用父类的构造器,则JVM会默认调用父类的无参构造器

(父类的默认构造器可调用;即父类没有其他的构造器,或者显示的提供父类的默认构造器)

5))用super方法显示调用父类的构造器,且他必须在子类构造器的第一行

注:

1))在创建子类时,如果子类的构造器中没有显式的调用父类构造器,在javac时,在子类的构造器的第一行自动加上super();

2))this,和super不能同时出现在构造器中,因为他们都要求在第一行

重写

子类中拥有父类相同的方法,但功能实现却不同。在调用时,优先使用子类的方法来完成功能。(前提是,父类的方法不能被私有化)

1)重写的要求:

1))存在继承关系

2))方法签名和放回值必须相同

3))访问的修饰符的可见性不能降低,声明的异常不能比父类方法的异常范围大。

4))访问控制修饰符的限制范围的总结



多态

行为多态:重写和重写

引用多态:基类对象的引用指向子类的对象

1)行为多态:

重载:

1))在子类中,有多个相同的方法名,而参数列表不同

2))在子类和父类中,如果父类中的方法被子类继承,而子类中拥有和父类相同方法名,参数列表不同

重写:

子类方法的修饰符不能小于父类的修饰符范围,异常不能大于父类的范围

2)引用多态:

注:

基类引用.子类属性,将编译出错

因为,基类的引用对象是子类类型,这是java阶段的内存结构;而java代码执行需要javac,java两个阶段,所以他在javac阶段无法通过编译

例:

Human h=new Teacher();

1))在编译阶段,涉及到类型转换,从小的转换到大的

2))在执行阶段:使用基类引用指代堆区中的子类对象

注:java变量两种类型

1)) 一种是编译类型,一种是运行类型。

2))编译类型有变量的类型决定

3))运行时类型是实际对象类型决定。

4))如果这两种类型不一致,这种现象为动态绑定,又叫引用多态

类型转换

1.自动转换

(向上转换):小类型--->大类型

2.强制转换:

1)语法:

子类型 变量名=(子类型)

注:

1))转换的前提是,存在继承关系

2))instanceof 关键字 用于判断对象的类型

总结

理解好多态对后面的面向接口编程有很大的帮助。
自己思考一下多态跟编程的设计原则的低解耦的关系。

分享到:
评论

相关推荐

    java学习笔记-java思维导图流程图表格整理

    Java学习笔记 1 命令行运行 1 Java基础 1 注释 1 单行注释 1 多行注释 1 文档注释 1 标识符和关键字 2 数据类型 4 类型转换 7 变量 9 基本运算符 10 包机制 12 Javadoc 12 使用命令行生成 12 使用idea生成 12 Java...

    java上课笔记

    面向对象,封装,继承,多态,重载和重写的区别。接口,final关键字等笔记

    Java学习第四周笔记总结

    这周学习包括Java的封装和继承,方法重写和多态,抽象类和接口等相关内容。

    JavaSE基础学习笔记

    JavaSE 星辰学习笔记 简介 如何高效的学习Java 案例:创建一个博客网站typecho 基础 Java程序运行机制 数据类型 变量 变量作用域 常量final 变量的命名规范 运算符 for循环 增强for循环 break continue 练习 Java的...

    java基础笔记

    java初学者的学习笔记,很详细。 目录 0 第一节 7月15日 2 一、 IT行业相关介绍 2 二、C、C++和Java语言的比较 2 三、 JDK基础介绍 2 四、 面向对象与面向过程的比较 2 五、 Java相关介绍 2 六、 Path和Classpath...

    java内部学习笔记.docx

    Java技术基础 4 1.1编程语言 4 1.2 Java的特点 4 1.3 Java开发环境 4 1.4 Java开发环境配置 5 1.5 Linux命令与相关知识 5 1.6 Eclipse/Myeclipse程序结构 6 Java语言基础 7 2.1基础语言要素 7 2.2八种基本数据类型 7...

    Java学习笔记-个人整理的

    {1.6}数据类型转换}{26}{section.1.6} {1.7}方法}{26}{section.1.7} {1.8}运算符}{27}{section.1.8} {1.8.1}自增运算}{28}{subsection.1.8.1} {1.8.1.1}Postincrement}{28}{subsubsection.1.8.1.1} {1.8.1.2}...

    c#学习笔记——学习心得

    算法和数据结构的集合(对象),具有封装、继承、多态等特点。父类—基类、子类—派生类。类的多态是指不同的类进行同一操作可以有不同的行为。类是相同对象的集合,并为这些对象定义了编程语言上的属性和方法。类修饰...

    net学习笔记及其他代码应用

    答:封装、继承、多态。 35.能用foreach遍历访问的对象需要实现 ________________接口或声明________________方法的类型。 答:IEnumerable 、 GetEnumerator。 36.GC是什么? 为什么要有GC? 答:GC是垃圾收集器...

    python面向对象day04.txt

    封装(类和私有变量) 继承 多态(python只能实现动态) issubclass(cls, 类或元组) 多继承 一个子类继承自两个或两个以上的父类 类的 __mro__ 属性绑定类的元组 用来记录方法的查找顺序 super 函数是按mro ...

    python学习笔记(十二)面向对象2

    文章目录面向对象面向对象三大特点类的继承继承语法方法重写多继承继承链访问权限类属性类方法静态方法多态特性对象支持字典操作 面向对象三大特点 封装:既是对数据封装,又是对处理数据的方法的封装 继承:强调的...

    Python第一阶段笔记汇总.docx

    (五)里氏替换(扩展重写,继承后的重写,指导继承的设计) 96 (六)迪米特法则(用父类减少传递数据量,类与类交互的原则) 97 第三章 模块包+函数式编程 98 通用:快捷键 98 一 模块 Module 98 (一)定义: 包含一...

    asp.net知识库

    泛型技巧系列:如何提供类型参数之间的转换 C#2.0 - Object Pool 简单实现 Attributes in C# 手痒痒,也来个c# 2.0 object pool 泛型技巧系列:用泛型打造可复用的抽象工厂 体验.net2.0的优雅(四):Provider、策略...

Global site tag (gtag.js) - Google Analytics