黑马程序员_java多态机制
来源:互联网 发布:159女儿村输出数据 编辑:程序博客网 时间:2024/05/19 09:11
黑马程序员_java多态机制
java面向对象的三大基本特性分别是,封装,继承,多态。其中的多态机制可以说是其中最强大的机制。方法的重写Overriding和重载Overloading是Java多态性的不同表现。重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。
如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写(Overriding)。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被“屏蔽”了。如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。Overloading的方法是可以改变返回值的类型。
请往下面看一个方法重载的例子
public class Animal{//
public void show(){
System.out.println("itheima");
}
}
class Cat extends Animal{
public void show(String name){
System.out.println(name);
}
}
/*
父类中已经有了一个show方法,我在子类里面也定义了一个show方法但是参数和父类不一样。
Cat s=new Cat();
s.show();//调用的是父类中的方法
s.show("黑马程序员");//调用的是子类自己的show方法
重载方法的概念就是在一个作用域中出现同名不同参的方法,即称为方法的重载。在调用重载的方法时根据传递的参数来调用相应的方法,这就被称为java的静态多态性。因为在编译时系统就能决定要调用哪个函数。
*/
-----------------------------------------------
请往下面看一个方法重写(覆盖)的例子:
public class Animal{
public void show(){
System.out.println("父类");
}
}
class Cat extends Animal{
public void show(){
System.out.println("子类");
}
}
上面这段代码中。父类已经有了一个show方法。子类还定义了一个同名同参的方法,这就被称为方法的重写也可以叫覆盖。
重写父类方法时需要特别注意两点。
1.子类中重写的方法要和父类中被重写的方法一致,如:父类中这个方法的返回值为String,子类重写这个方法时如果返回值不是String就会报错。
2.子类中重写的方法的访问权限要等于或大于父类中被重写方法的。否则编译也不会通过
----参阅上面程序的例子来看我下面的这段代码-----
Animal a=new Cat();//父类的引用指向子类的对象
a.show();//在这里调用子类中的这个show方法
1.在编译期间:参阅引用型变量所属的类中是否有调用的方法。(假设父类中没有show方法编译时就会报错)
2.在运行期间:调用的却是实际对象所属类中的方法。
这就是java的动态多态性,动态多态性是指在运行中才能动态确定操作指针所指的对象。
动态多态性的前提就是
1.类与类之间得有继承关系
2.子类得重写父类的方法
3.父类引用要指向想子类对象
-----小弟不才,高手请飞过-----
-----希望本博文能对新手有一点用-------
- 黑马程序员_java多态机制
- 黑马程序员_Java反射机制
- 黑马程序员_java异常机制
- 黑马程序员_Java反射机制
- 黑马程序员_java异常机制
- 黑马程序员_Java异常机制
- 黑马程序员_Java反射机制
- 黑马程序员_Java反射机制
- 黑马程序员_java中的多态
- 黑马程序员_JAVA反射机制的理解
- 黑马程序员_JAVA类加载机制
- 黑马程序员_Java的垃圾回收机制
- 黑马程序员_java的反射机制
- 黑马程序员_Java异常处理机制
- 黑马程序员_java中的反射机制
- 黑马程序员_java的反射机制_01
- 黑马程序员_java中的异常机制
- 黑马程序员_java异常处理机制
- Entity Framework Code First 学习日记(10)
- C#:属性
- Servlet是多线程的,最好定义局部变量,不要定义全局变量
- 笔记:des加解密,php和.net版的实现
- 吸电流、拉电流、灌电流、上下拉电阻、高阻态
- 黑马程序员_java多态机制
- 行为的抽象即是接口(Interface)
- java连接access
- 开源项目-文件虚拟成磁盘
- 泛型通用函数的一些特殊问题的解决方法
- java获取日期总结
- ASP.NET MVC应用程序的安全性介绍总括(高级编程)
- android NDK的android.mk文件的详解
- jquery 选择器的强大总结