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
重写与重载的区别
这是两种完全不同的语法现象:
重写是指一个类中定义多个方法名名相同但参数列表不同的方法, 在编译时, 根据参数的数量, 类型, 顺序, 来决定调用哪个方法
重载是指在子类中定义与父类完全相同的方法, 在程序运行时根据对象的类型(不是引用变量的类型)来调用不同的实现方法
重要:
重载编译期绑定, 根据参数变量的类型来决定执行哪个重载方法
重写运
声明一个属性表示常量,
需要声明时赋值/构造方法中赋值
通常与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
重写与重载的区别
这是两种完全不同的语法现象:
重写是指一个类中定义多个方法名名相同但参数列表不同的方法, 在编译时, 根据参数的数量, 类型, 顺序, 来决定调用哪个方法
重载是指在子类中定义与父类完全相同的方法, 在程序运行时根据对象的类型(不是引用变量的类型)来调用不同的实现方法
重要:
重载编译期绑定, 根据参数变量的类型来决定执行哪个重载方法
重写运
相关文章推荐
- Java基础(一):Java面向对象、面向对象封装、抽象类、接口、static、final
- Java基础(一):Java面向对象、面向对象封装、抽象类、接口、static、final
- 黑马程序员--03.Java面向对象--06.【final关键字】【抽象类】【接口】
- Java面向对象8——对象转型,动态绑定,抽象类,final关键字及接口
- java 中的重载与重写 抽象类与接口的区别
- 黑马程序员——Java基础---面向对象代码块和继承和this和super和重写和重载和final
- java面向对象中的方法重载与方法重写的区别
- Java面向对象思想、类、抽象类、多态、接口
- 四、资源和对象的区别、抽象类和抽象方法、重载技术、接口interface
- 面向对象重写(override)与重载(overload)区别---转载“竹木人”
- 面向对象多态的实现(抽象类Abstract和接口Interface的用法区别)
- Java学习系列(五)Java面向对象之抽象类、接口、内部类、枚举类详解
- 继承和实现的区别、重写和重载的区别,抽象类和接口的区别
- 一个例子体现JAVA中的面向对象思想,接口(抽象类)的用处
- 深入java面向对象三:抽象类和接口(转载)
- 面向对象中接口和抽象类的区别
- JAVA面向对象知识点总结(6)— 抽象类、接口
- Java学习系列(五)Java面向对象之抽象类、接口、内部类、枚举类详解
- Java笔记2 面向对象<3>final关键字、抽象类、模板方法模式、接口
- 面向对象重写(override)与重载(overload)区别