黑马程序员-----java多态、instanceof总结*

原创 2013年12月02日 10:34:06

---------------------- ASP.Net+Android+IOS开发.Net培训、期待与您交流! ----------------------


一、多态

格式:Animal a = new Cat();

经典例子:

class Animal{
	void method1(){
		System.out.println("FU 1");
	}
	
	void method2(){
		System.out.println("FU 2");
	}
}

class Cat extends Animal{
	void method1(int i){  //子类重载了父类method1方法
		System.out.println("Zi 1");
	}
	
	void method2(){   //子类重写了父类method2方法
		System.out.println("Zi 2");
	}
}

public class Demo{
	public static void main(String[] args){
        Animal a = new Cat();
        a.method1();
        a.method1(34);
        a.method2();
        }
}
以上程序:

1、父类引用指向子类对象

2、a.method1()会调用父类中的method1方法

3、因为父类中没有method1(int i)这个方法,所以a.method1(34)编译出错。

4、a.method2()会调用子类method2方法


总结:

1、父类引用指向子类对象

2、该引用只能够调用父类中定义的属性和变量

3、如果子类复写了父类中的某个方法,那么该引用调用的是子类中的该方法(动态连接、动态调用)


重点易错:

1、当该引用调用非静态方法时,编译能否通过看左边(该引用所属类中是否有这个方法),运行看右边(如果子类复写了该方法就运行子类)

2、多态中如果父类和子类出现了同名变量,那么编译和运行时都看左边,也就是都赋值给父类中的成员变量

3、调用静态方法时,一律写成类名.静态方法

4、对象引用调用方法时,都是先通过引用找到实际对象,然后由对象本身去调用该方法


结论:

静态方法和成员变量(不分静与非):都只看左边

非静态方法:                                        编译看左边,运行看右边


多态的好处与弊端:

好处:大大提高了程序的可拓展性

弊端:父类引用只能够掉调用父类中的属性和方法或子类中复写父类的方法,而不能够调用子类特有的方法



二、instanceof

格式:a instanceof B

a:是某个类实例的引用变量

B:是某个类的类名


什么时候用instanceof?

当一个类的子类类型很少时,例如性别只分男女,这样就可以用instanceof来进行判断



---------------------- ASP.Net+Android+IOS开发.Net培训、期待与您交流! ----------------------

详细请查看:http://edu.csdn.net

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

黑马程序员:Java基础总结----多态

黑马程序员:Java基础总结 多态  ASP.Net+Android+IO开发、.Net培训、期待与您交流! 多态: ...

黑马程序员—java面向对象总结(3)—面向对象继承、多态特性

------- android培训、java培训、期待与您交流! ---------- 四、继承(extends) 继承特点: 1、提高了代码的复用性; 2、让类与类之间产生关系,有了这个关系,才有了...

黑马程序员《java基础总结(四)》(面向对象特点--多态)

---------------------- ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ---------------------- 多 态(面向对象特征之...

黑马程序员_java的面向对象(对第八课多态..内部类..匿名内部类的总结)

------- android培训、java培训、期待与您交流! ---------- 通过今天对java语言面向对象的学习,我来给自己的学习内容做下简单直白的总结: 首先,我先来总结...

黑马程序员__Java抽象类和多态总结

------- android培训、java培训、期待与您交流! ---------- 抽象类的总结  A. 抽象类的定义    抽象方法: 方法使用abstract修饰,没有方法体(大括...

黑马程序员 知识点总结-Java多态

---------------------- ASP.Net+Android+IOS">http://edu.csdn.net"target="blank">ASP.Net+Android+IOS开发...

黑马程序员_Java继承、多态、接口零碎知识总结

继承、多态、接口零碎知识总结 Blog_13_1 继承 继承:多个类中存在相同的属性或者是行为时,将这些相同的属性或者行为抽取到单独的一个类中,那么这多个类就无需再定义这些属性或者行为,直接让多个...

黑马程序员:Java基础——instanceof的用法

------- Java EE培训、java培训、期待与您交流! ----------

黑马程序员java学习笔记——面向对象的特征封装、继承和多态

感觉面向对象是在java中比较难的内容,但也是核心内容,毕竟写代码思想是很重要的,面向对象就是一种思想,精通这种思想,编程就会变的简单。下面就是我学完面向对象这一部分做的笔记。     面向对象   ...

黑马程序员:java学习笔记-接口和多态

----------- android培训、java培训、java学习型技术博客、期待与您交流! ------------ 1.1. 接口 1.1.1. 概述 接口interfa...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)