多态的最重要的概念
父类类型引用变量,指向子类对象
多态在开发中的实际意义
static关键字修饰,类名.方式更省心
多态的最重要的概念
父类类型引用变量,指向子类对象
多态在开发中的实际意义
static关键字修饰,类名.方式更省心
引用数据类型的转换,必须在父子类关系之间
若强转的目标类型并不是该引用真正指向的数据类型时则编译通过,运行阶段发生类型转换异常
为了避免上述错误的发生,应该在强转之前进行判断,格式如下:
if(引用变量 instanceof 数据类型)
判断引用变量指向的对象是否为后面的数据类型
1、引用数据类型之间的转换方式有两种:自动类型转换 和 强制类型转换
自动类型转换主要指小类型向大类型的转换,也就是子类转为父类,也叫做向上转型
强制类型转换主要指大类型几小类型的转换,也就是父类转为子类,也叫做向下转型或显式类型转换
多态的特点:
当父类类型的引用指向子类类型的对象时,父类类型的引用可以直接调用父类独有的方法
当父类类型的引用指向子类类型的对象时,父类类型的引用不可以直接调用子类独有的方法
父子类都有的非静态的方法,编译阶段用父类版本,运行阶段调用子类重写的版本(动态绑定)
对于父子类都有的静态方法的调用,编译与运行阶段都是子类
多态 父类类型指向子类的对象
父类类型,指向子类对象,称之为多态
父类类型 引用变量名 = new 子类类型();
如:
Shape sr = new Rect();
sr.show
多态主要指同一种事物表现出来的多种形态
饮料: 可乐、雪碧、红牛、脉动
要想用多态,首先有继承
1.static关键字
概念 、类层级、使用方式、构造块和静态代码块、单例设计模式、饿汉式与懒汉式
2.继承
概念、特点、子类不能继承的、方法的重写、重写的原则、IDEA的使用等
3.访问控制
public private,package、导入等
4.final关键字
概念,修饰类、成员方法、成员变量、常量等
重中之重,单例设计模式
饿汉式与懒汉式
final关键字修饰类体现在该类不能被继承
--主要用于防止滥用继承,如:java.lang.String类等
final关键字修饰成员方法体现在该方法不能被重写但可以被继承
--主要用于防止不经意间造成重写,如:java.text.Dateformat类中format方法
final关键字修饰成员变量体现在该变量必须初始化且不能改变
---主要用于防止不经意间造成改变,如
java.lang.Thread类中MAX_PRIORITY等
常量的概念
在以后的开发中很少单独使用final关键字来修饰成员变量,通常使用public static final关键字共同修饰成员变量来表达常量的含义
常量的命名规范要求是所有字母都要大写,不同的单词之间采用下划线连
public static final double PI = 3.14;
final 本意为“最终的,不可改变的”,可以修饰类,成员方法以及成员变量
final 关键字修饰类体现在该类不能被继承
主要用于防止滥用继承,如
java.lang.String类等
Final修饰方法,不能重写,但是可以继承
常用的访问控制符
public
protected
默认
private 本类中可以访问,其它的都不能访问
public修饰的成员可以在任意位置使用
private修饰的成员只能在本类内部使用
通常情况下,成员方法都使用public关键字修饰,成员变量都使用private
package语句的由来
定义类时需要指定类的名称,但如果仅仅将类名作为类的唯一标识,则不可避免的出现命名冲突的问题
这会给组件复用以及团队间的合作造成很大的麻烦!
在java语言中,用包(Package)的概念来解决命名冲突的问题
包的定义
在定义一个类时,除了定义类的名称一般还要指定一个包名,格式如下
package 包名
package 包名1.包名2..包名n;
包名有一定的命名规则
包的导入
import 关键字的导入包
使用jmport关键字导入静态成员,从Java5.0开始支持
又见构造块与静态代码块
大括号的内容都是构造块
静态代码块 在前面加上了static的关键字
父类的构造方法先与子类的构造方法
先执行父类的静态代码块,再执行子类的静态代码块
执行父类构造块,执行父类的构造方法
执行子类的构造块,执行子类的构造方法
方法的修饰词,返回值类型,方法名,参数列表完全相同
要求方法名相同、参数列表相同以及返回值类型相同,从java5开始允许返回子类类型
要求方法的访问权限不能变小,只能是相同或是变大
public 是最大的访问权限
要求方法不能抛出异常
从父类中继承下来的方法不满足子类的需求时,就需要在子类中重新写一个和父类一样的方法来覆盖从父类中继承下来的版本,该方式就叫做方法的重写 Override
方法重载与方法重写的区别
方法重载:方法名相同,参数列表不同
方法重写:子类中与父类名称一样的方法
java 开发的常用工具
文本编辑器写代码
记事本,Notepad++、Edit Plus UltraEdit
集成开发环境(IDE,Integrated Development Environment)
Jbuilder NetBeans Eclipse MyEclipse IDEA
IDEA
java 开发的常用工具
文本编辑器写代码
记事本,Notepad++、Edit Plus UltraEdit
集成开发环境(IDE,Integrated Development Environment)
Jbuilder NetBeans Eclipse MyEclipse IDEA
IDEA
java 开发的常用工具
文本编辑器写代码
记事本,Notepad++、Edit Plus UltraEdit
集成开发环境(IDE,Integrated Development Environment)
Jbuilder NetBeans Eclipse MyEclipse IDEA
IDEA
java 开发的常用工具
文本编辑器写代码
记事本,Notepad++、Edit Plus UltraEdit
集成开发环境(IDE,Integrated Development Environment)
Jbuilder NetBeans Eclipse MyEclipse IDEA
IDEA
java 开发的常用工具
文本编辑器写代码
记事本,Notepad++、Edit Plus UltraEdit
集成开发环境(IDE,Integrated Development Environment)
Jbuilder NetBeans Eclipse MyEclipse IDEA
IDEA
java 开发的常用工具
文本编辑器写代码
记事本,Notepad++、Edit Plus UltraEdit
集成开发环境(IDE,Integrated Development Environment)
Jbuilder NetBeans Eclipse MyEclipse IDEA
java 开发的常用工具
文本编辑器写代码
记事本,Notepad++、Edit Plus UltraEdit
集成开发环境(IDE,Integrated Development En)
java 开发的常用工具
文本编辑器写代码
记事本,Notepad++、Edit Plus UltraEdit