/*
题目:
(多态,instanceof)有如下代码
class Animal
{
private String name;
// 1
}
class Dog extends Animal
{
//2
}
class Cat extends Animal
{
//3
}
public class TestAnimal
{
public static void main(String args[]){
Animal[] as = new Animal[]{
new Dog("Pluto"),
new Cat("Tom"),
new Dog("Snoopy"),
new Cat("Garfield")
};
Dog[] dogs = getAllDog(as);
for(int i = 0; i<=dogs.length; i++)
{
System.out.println(dogs[i].getName());
}
}
public static Dog[] getAllDog(Animal[] as)
{
//4
}
}
程序填空:
a) 在 //1, //2, //3 处填上适当的get/set 方法和构造方法
b) 完成//4 处的填空。getAllDog 方法从一个Animal 数组中挑选出所有的Dog 对象,并把这些对象放在一个Dog 数组中返回。 */
package MyTest; class Animal
{
private String name;
// 1
public String getName()
{
return this.name;
}
public void setName(String name)
{
this.name = name;
}
} class Dog extends Animal
{
// 2
Dog(String name)
{
this.getName();
this.setName(name);
}
} class Cat extends Animal
{
// 3
Cat(String name)
{
this.getName();
this.setName(name);
}
} public class TestAnimal
{ /*
* @param args
*/
public static void main(String[] args)
{
Animal[] as = new Animal[]
{
new Dog("Pluto"),
new Cat("Tom"),
new Dog("Snoopy"),
new Cat("Garfield")
};
Dog[] dogs = getAllDog(as);
for (int i = 0; i < dogs.length; i++)
{
System.out.println(dogs[i].getName());
}
} public static Dog[] getAllDog(Animal[] as)
{
// 4
Dog[] dog = new Dog[as.length];
int len = as.length;
int j = 0;
for(int i = 0;i<len;i++)
{
if(as[i] instanceof Dog)
{
dog[j] = (Dog)as[i];
j++;
}
}
//////////////////
Dog[] dg = new Dog[j];
for(int i = 0;i<j;i++)
{
dg[i] = dog[i];
}
//////////////////
return dg; /*
方法二:
public static Dog[] getAllDog(Animal[] as)
{
// 4
List<Dog>dd = new ArrayList<Dog>();
for(int i=0; i<as.length; i++)
{
//System.out.println(as[i].getClass().getName()); if (as[i].getClass().getName().contains("Dog"))//( as[i] instanceof Dog )
{
dd.add((Dog)as[i]);
}
}
int size = dd.size();
Dog[] cc = (Dog[])dd.toArray(new Dog[size]);
return cc;
}
*/
}
}

  

Java(多态练习 instanceof)的更多相关文章

  1. java中的instanceof

    instanceof是Java.php的一个二元操作符(运算符),和==,>,<是同一类东西.由于它是由字母组成的,所以也是Java的保留关键字.它的作用是判断其左边对象是否为其右边类的实 ...

  2. 【Java基础】1、java中的instanceof

    instanceof是Java.php的一个二元操作符(运算符),和==,>,<是同一类东西.由于它是由字母组成的,所以也是Java的保留关键字.它的作用是判断其左边对象是否为其右边类的实 ...

  3. Java-Runoob-面向对象:Java 多态

    ylbtech-Java-Runoob-面向对象:Java 多态 1.返回顶部 1. Java 多态 多态是同一个行为具有多个不同表现形式或形态的能力. 多态就是同一个接口,使用不同的实例而执行不同操 ...

  4. Java学习笔记二十六:Java多态中的引用类型转换

    Java多态中的引用类型转换 引用类型转换: 1.向上类型转换(隐式/自动类型转换),是小类型到大类型的转换: 2.向下类型转换(强制类型转换),是大类型到小类型的转换: 3.instanceof运算 ...

  5. 深入理解java多态没有烤山药的存在,java就不香了吗?

    目录 1. 从吃烤山药重新认识多态 2. 多态前提条件[重点] 3. 多态的体现 4. 多态动态绑定与静态绑定 5. 多态特性的虚方法(virtual) 7. 向上转型 8. 向下转型 9. 向上向下 ...

  6. Java多态之向下转型

    目录 Java多态之向下转型 强制类型转换 instanceof Java多态之向下转型 往期回顾:我们学习了向上转型和动态绑定的概念,可以知道在继承关系中,将一个子类对象赋值给父类的引用变量,调用父 ...

  7. Java多态的6大特性|乐字节

    大家好,我是乐字节的小乐,前几天讲完了Java继承,接下来我们会讲述Java多态. 以上就是本次学习的6大任务.我们依次来看. 一. Object类 Object类是所有Java类的根基类. 如果在类 ...

  8. Java 多态——与C++的比较

    学习了Java和C++之后,由于长期不使用C++,而java的基础知识掌握不牢,现在已经搞不清java多态了.现在先来谈谈java多态,稍后有时间再更新C++的多态,并进行比较~ 一. Java的多态 ...

  9. C++和java多态的区别

    C++和java多态的区别 分类: Java2015-06-04 21:38 2人阅读 评论(0) 收藏 举报  转载自:http://www.cnblogs.com/plmnko/archive ...

随机推荐

  1. python基础(二)字符串內建函数详解

    字符串 定义:它是一个有序的字符的集合,用于存储和表示基本的文本信息,''或""或''' '''中间包含的内容称之为字符串特性:1.只能存放一个值2.不可变,只能重新赋值3.按照从 ...

  2. 使用Emacs中的org-mode写cnblogs之图片插入

    .title { text-align: center; margin-bottom: .2em } .subtitle { text-align: center; font-size: medium ...

  3. 【转】50条大牛C++编程开发学习建议

    每个从事C++开发的朋友相信都能给后来者一些建议,但是真正为此进行大致总结的很少.本文就给出了网上流传的对C++编程开发学习的50条建议,总结的还是相当不错的,编程学习者(不仅限于C++学习者)如果真 ...

  4. java数据结构整理(二)

    一.List接口,有序的Collection接口,能够精确地控制每个元素插入的位置,允许有相同的元素 1.链表,LinkedList实现了List接口,允许null元素,提供了get().remove ...

  5. java和Ajax

    原博(实在太啰嗦了):https://netbeans.org/kb/docs/web/ajax-quickstart_zh_CN.html 1.Ajax的基本原理 Ajax 代表异步 JavaScr ...

  6. Sed替换 内容带反斜杠(/)

    sed "s#XXXX#${NAME}#" $MAIL_CONTENT > /tmp/MAIL_CONTENT1.tmp -----不论什么字符,紧跟着s命令的都被认为是新的 ...

  7. linux 自动备份脚本

    首先我在/root/backup 目录下建立一个文件夹, #mkdir /root/backup/mysqlbackup 以后在每天五点钟,就会有一个文件保存在这里. 接着新建文件 #vim /roo ...

  8. CSS3动画效果——js调用css动画属性并回调处理详解

    http://www.jb51.net/css/258407.html 这篇文章主要详细介绍了CSS3动画效果回调处理,需要的朋友可以参考下 我们在做js动画的时候,很多时候都需要做回调处理,如在一个 ...

  9. linux 下 tomcat 之 配置静态资源路径

    1.找到配置文件 找到tomcat\conf\server.xml 2.找到Host 3. 添加 Context <Host name="localhost" appBase ...

  10. PHP文件夹文件拷贝/复制函数 dir_copy($src = '', $dst = '')

    /* * 文件夹文件拷贝 * * @param string $src 来源文件夹 * @param string $dst 目的地文件夹 * @return bool */ function dir ...