Java 面向对象 多态
来源:互联网 发布:数控铣创意图案编程 编辑:程序博客网 时间:2024/05/21 17:13
多态设计思想
Animal a = newCat();
如上图所示 : 其实就是一个子类的实例赋值给其父类类型的变量。
此时对象a有两种类型
1.编译时:声明的是什么类型,就看作是什么类型
Animal 类
2.运行时:创建对象的类型,即实用对象的真正类型
Cat 类
Animal a = null;
a = new Dog();
a = new Cat();
可以看出a是有多重形态的。
多态的作用:当把不同的子类对象都当作父类的类型来看,可以屏蔽不同子类对象之间的实现差异,
从而通过通用的代码达到通用编程,以适应需求的不断变化。
zum.B.
多态时方法调用
前提:必须先存在多态情况
存在父类:SuperClass,子类:SubClass 方法:doWork
引用类型的强制类型转换
字段不存在多态
通过对象调用字段,在编译时期就已经决定了调用那一块内存空间的数据.
--------->字段不存在覆盖的概念,在多态时,不能有多态特征(在运行时期体现子类特征).
只有方法才有覆盖的概念.
组合关系
继承关系:子类可以继承到父类中部分的成员,那么此时子类是可以修改到父类的信息的.
继承关系破坏封装,为了复用代码可能会让子类具有不该具有的功能.
为什么引入继承:为了代码复用问题.
解决代码复用问题,不一定非要使用继承,也可以使用”包含关系”(has A).
初始化代码块
使用普通初始化代码块
使用静态初始化代码块(先初始化所有静态代码块--父类代码块--父类构造器--子类代码块--子类构造器)
特点:所在类被加载后就执行,和静态方法一样不能访问外部实例成员。
优先于主方法执行,优先于构造代码块执行,不管有创建多少对象,静态代码块只执行一次,可用于给
做应用的初始化操作,一般用于做初始化操作,家在资源等操作。
单例设计模式
目的:保证整个应用中某一个类有且只有一个实例(一个类在内存只存在一个对象),即所有指向该类型实例的引用都指向同一块内存空间。
饿汉式:单例类被加载进内存,对象就建好了
写单例模式的步骤:单讲饿汉式.
1):必须在该类中,自己先创建出一个对象.
2):私有化自身的构造器,防止外界通过构造器创建新的对象.
3):想外暴露一个公共的静态方法用于获取自身的对象.
懒汉式:对象是方法第一次需要时才创建,也称对象的延迟加载
final修饰符
继承关系最大弊端是破坏封装:子类能访问父类的实现细节,而且可以通过方法覆盖的形式修改实现细节.
final 类
表示最终的类,该类不能再有子类(只要满足以下条件就可以把一个类设计成final类)
1,某个类不是专门为继承而设计的
2,处于安全考虑,类的实现细节不许改动,不准修改源代码
3,确信该类不会再被拓展
�java里final修饰的类有很多,比如八大基础数据类型的包装类和String类等
final 方法
最终的方法,表示该类不能够被子类覆盖(需要用final修饰的方法)
1,在父类中提供的统一的算法骨架,不准子类通过方法覆盖来修改,此时使用final修饰,模板方法设计模式
2,在构造器中调用的方法(初始化方法),此时一般使用final修饰
�final修饰的方法,子类可以调用,但是不能覆盖
final 变量
表示最终的变量,常量,该变量只能赋值一次,不能再赋值
1,final变量必须显示地指定初始值,系统不会为final字段初始化
2,final变量一旦被初始化,就不能被重新赋值
3,常量名规范全部大写
�final是唯一 一个可以修饰局部变量的修饰符---》具体后续局部内部类
一般我们会专门定义一个常量类,专门用来存储常量数据
public static final double PI = 3.141592653589793 ;
public static final int MAX_VALUE = 1000;
工具类的设计
工具类如何设计:工具在开发中其实只需要存在一份即可.
1):如果工具方法没有使用static修饰,说明工具方法得使用工具类的对象来调用.
此时把工具类设计为单例的.
2):如果工具方法全部使用static修饰,说明工具方法只需要使用工具类名调用即可.
此时必须把工具类的构造器私有化(防止创建工具类对象调用静态方法).
----------------------------------------------------------------------
一般的,首选第二种,简单.在JDK中提供的工具类都是第二种.如java.util.Arrays类.
- java面向对象-多态
- java 面向对象 多态
- Java面向对象 ----多态
- JAVA面向对象-----多态
- Java面向对象 多态
- java面向对象/多态
- Java 面向对象 多态
- Java面向对象_多态
- java笔记-面向对象-多态
- java面向对象(多态)
- Java面向对象--多态、异常
- #4JAVA面向对象-多态#
- JAVA 面向对象之 多态
- Java面向对象(8)多态
- JAVA面向对象6:多态
- Java面向对象特性--多态
- java----Java面向对象
- java----Java面向对象
- Java ——guava-libraries
- 题目16:矩形嵌套
- Qt网络编程--HTTP服务器(三))
- OkHttp封装类
- 把科学计数法转成字符串
- Java 面向对象 多态
- linux kernel makefile 中 $(Q)的意思
- Linux 0.12 startup汇编代码的编译
- Qt网络编程--HTTP服务器(四)
- 爬虫与反爬虫之间的战争
- Shrio认证详解+自定义Realm
- 两个好用的chrome拓展程序以及开发chrome拓展程序介绍
- Fragment 简介及应用汇总
- 喷水装置(一) 贪心