您的位置:首页 > 编程语言 > Java开发

JAVA面向对象,重写 重载的区别, 抽象类, 接口,final

2017-03-09 23:35 344 查看
final
声明一个属性表示常量,
需要声明时赋值/构造方法中赋值
通常与static连用,
只有一份,
类常量

否则每个对象堆中有一份该常量

声明一个方法

不可以被子类重写

声明一个类

不可以被继承
String类为final类型类

应用:
常量类…

在参数中使用

表示不可以在方法内部对该参数重新赋值

 

抽象类
将一些具有相同特征和行为的类抽象为抽象类(将许多相同特征和行为的对象抽象为一个类)

使用abstaract关键字声明一个抽象类

规则:

抽象类中可以没有抽象方法
不可以实例化

抽象方法用abstract声明,
由子类/抽象子类来实现

非抽象子类必须实现父类所有的抽象方法

抽象类继承抽象类,
可以不用实现

默认添加无参构造

不能为声明为final,
因为这样不能有子类,
则无意义

抽象类的意义:

为子类提供统一的类型
封装子类重复的内容(成员变量/方法)

定义有抽象方法,
各子类虽然有不同的实现,
但方法的定义是一致的

 

接口
接口是一组行为规范的定义,
没有实现

OOP原则,
面向接口编程

规则:
抽象方法默认: public abstract

常量默认默认:public static final,
接口中只能定义常量

不可以有静态/非静态代码块

类/抽象类可以实现多个接口,
使用implements.
类需要实现所有接口中抽象方法

接口继承接口用extends,
同样可以多继承.

JDK 1.8之后

可以添加默认实现方法
格式: default
T functionName(M m) {}  --> 默认为public

接口不属于类,
与类平级(类似于注解,
枚举)

接口不能有构造方法

可以IA继承IB,
A实现IA,IB,
不推荐

命名习惯ITest, Testable

 

多态

方法的重载与重写
对象的多态性

父类的引用指向子类的对象

编译期,
能调用什么看父类

运行期,
实际执行哪个实现看子类

使用父类引用传参,
便于扩展

多态的意义
同一个类型的引用指向不同的对象,
有不同的实现

同一个对象造型成不同的类型,
有不同的功能

 Sport a = new Man()

Wen a  = new Man()

向上造型

父类的类型
实现的接口

强制转型
可以通过强制转型将父类型变量转为子类型变量,
前提是该变量指向的对象确实是该子类类型

也可以通过强制转型将变量转为某种接口类型,
前提是该该变量指向的对象确实实现了该接口

instanceof

子类 instanceof
父类/父抽象类/接口/父接口
均为true

重写与重载的区别

这是两种完全不同的语法现象:
重写是指一个类中定义多个方法名名相同但参数列表不同的方法, 在编译时, 根据参数的数量, 类型, 顺序, 来决定调用哪个方法
重载是指在子类中定义与父类完全相同的方法, 在程序运行时根据对象的类型(不是引用变量的类型)来调用不同的实现方法

重要:
重载编译期绑定, 根据参数变量的类型来决定执行哪个重载方法
重写运
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐