java多态、重写(OverRideing)
来源:互联网 发布:内核是什么知乎 编辑:程序博客网 时间:2024/06/12 01:26
首先要先说明一点:
重写是多态,重载不是多态
多态性是指允许将父类对象(接口)设置为一个或者多个与子类对象(接口实现类)相等的技术。赋值之后,父对象就可以根据复制给他的自对象的特征以不同方式运作。意思是:父类的方法被子类继承后表现出不同的行为。不同层次的类,又相同的方法,但是有不同的表现。
多态的关键是晚绑定,是运行期的行为,而重载(OverLoading)是编译期的行为,因此重载不是多态
1.有继承(或实现)
2.有重写
3.要有父类(接口)的对象指向子类(实现类)的引用。在编译期为父类对象,父类中未定义的方法不能调用;运行期为子类对象,子类中重写过的方法被执行子类的方法。
重写:
0.参数列表必须相同
1.访问修饰符不能比父类更严格
2.父类中用final修饰的方法不能被重写
3.父类中用static修饰的方法,在子类不能有重名且参数列表相同的普通方法,同名的静态方法不构成重写
4.返回值类型与被重写方法的返回值相同或返回值的子类
5.重写的方法不能抛出比被重写方法的声明或抛出的更大的异常
public class Parent{String s = "String Parent";public static void p(){System.out.println("Parent");}}
public class Child extends Parent{String s = "String Child";// This instance method cannot override the static method from Parent // 会报错,无法重写父类的静态方法/*public void p(){}*/public static void p(){System.out.println("Child");}public void p(int i){}}
public class Main{public static void main(String[] args){Parent parent = new Child();Child child = new Child();parent.p(); //The static method p() from the type Parent should be accessed in a static wayParent.p();<span style="white-space:pre"><span style="font-size:14px;">// 使用类名调用静态方法执行自己类中的静态方法</span></span>Child.p();System.out.println(parent.s);<span style="white-space:pre"><span style="font-size:14px;">//调用属性,是调用声明对象的属性</span></span>System.out.println(child.s);}}
// 打印结果
Parent
Parent--// 使用类名调用静态方法执行自己类中的静态方法
Child
String Parent--//调用属性,是调用声明对象的属性
String Child
引用类型的转换
向上转型:子类型转为父类型 Praent p = new Child();(隐式转换)
向下转型:父类型转为子类型 Child() c = (Child)p; (显示转换)(父类的引用指向子类的对象是前提,否则会出错)java.lang.ClassCastException
0 0
- java多态、重写(OverRideing)
- Java 重载、重写、多态
- Java方法重写,多态
- Java多态:重写和重载
- 【重载、重写 和 多态】 JAVA
- java-重载、重写、继承、多态
- 【Java】重写、重载、多态、继承
- Java多态:重载和重写
- Java-继承、重载、重写、多态
- Java重写
- JAVA 重写
- java:重写
- java 重写
- java重写
- java-重写
- Java重写
- Java中继承、多态、重载和重写
- java 多态,方法重写,方法重载
- 利用HttpWebRequest请求url路径返回json结果对象
- Android逗比自学webservice(五)第一个webservice
- Android中的GraphicBuffer同步机制-Fence
- apache+四层负载均衡 session同步
- android学习十一(android的SQLite数据库的使用)
- java多态、重写(OverRideing)
- SVN: is scheduled for addition, but is missing
- Android 图文混排 异步加载图片
- matlab 动态图drawnow函数
- oracle 数据库中数据导出到excel
- Oracle 客户端 NLS_LANG 的设置
- java基础学习-注解
- 黑-月(收藏某网友网址)关于keil C51 行业 硬件设计 PCB RFID
- git入门教程推荐