Java(多态练习 instanceof)
/*
题目:
(多态,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)的更多相关文章
- java中的instanceof
instanceof是Java.php的一个二元操作符(运算符),和==,>,<是同一类东西.由于它是由字母组成的,所以也是Java的保留关键字.它的作用是判断其左边对象是否为其右边类的实 ...
- 【Java基础】1、java中的instanceof
instanceof是Java.php的一个二元操作符(运算符),和==,>,<是同一类东西.由于它是由字母组成的,所以也是Java的保留关键字.它的作用是判断其左边对象是否为其右边类的实 ...
- Java-Runoob-面向对象:Java 多态
ylbtech-Java-Runoob-面向对象:Java 多态 1.返回顶部 1. Java 多态 多态是同一个行为具有多个不同表现形式或形态的能力. 多态就是同一个接口,使用不同的实例而执行不同操 ...
- Java学习笔记二十六:Java多态中的引用类型转换
Java多态中的引用类型转换 引用类型转换: 1.向上类型转换(隐式/自动类型转换),是小类型到大类型的转换: 2.向下类型转换(强制类型转换),是大类型到小类型的转换: 3.instanceof运算 ...
- 深入理解java多态没有烤山药的存在,java就不香了吗?
目录 1. 从吃烤山药重新认识多态 2. 多态前提条件[重点] 3. 多态的体现 4. 多态动态绑定与静态绑定 5. 多态特性的虚方法(virtual) 7. 向上转型 8. 向下转型 9. 向上向下 ...
- Java多态之向下转型
目录 Java多态之向下转型 强制类型转换 instanceof Java多态之向下转型 往期回顾:我们学习了向上转型和动态绑定的概念,可以知道在继承关系中,将一个子类对象赋值给父类的引用变量,调用父 ...
- Java多态的6大特性|乐字节
大家好,我是乐字节的小乐,前几天讲完了Java继承,接下来我们会讲述Java多态. 以上就是本次学习的6大任务.我们依次来看. 一. Object类 Object类是所有Java类的根基类. 如果在类 ...
- Java 多态——与C++的比较
学习了Java和C++之后,由于长期不使用C++,而java的基础知识掌握不牢,现在已经搞不清java多态了.现在先来谈谈java多态,稍后有时间再更新C++的多态,并进行比较~ 一. Java的多态 ...
- C++和java多态的区别
C++和java多态的区别 分类: Java2015-06-04 21:38 2人阅读 评论(0) 收藏 举报 转载自:http://www.cnblogs.com/plmnko/archive ...
随机推荐
- iOS开发——导入第三方库引起的unknown type name 'NSString'
今天加入SVProgressHUD的第三方库的时候报了24个错误( too many errors emitted, stopping now),都是 expected identifier or ' ...
- BCB实现BMP图片的RGB分解(转)
源:BCB实现BMP图片的RGB分解 1.打开BMP图片文件,在Image控件中显示: if(dlgOpen1->Execute()) { edt1->Text=dlgOpen1-> ...
- MIPI-2
Mipi针对显示有一整套解决方案,首先,框图如下 可以看到,很像OSI七层参考模型,分为 应用层:像素处理以及像素包管理,处理一些比较高的协议, 协议层底层:用于对打包好的像素数据进行二次打包,包括对 ...
- stm32实现待机唤醒
STM32的低功耗模式有3种:1.睡眠模式(CM3内核停止,外设仍然运行)2.停机模式(所有时钟都停止)3.待机模式(1.8v内核电源关闭) 进入待机模式的方法,以及设置WK_UP引脚用于把STM32 ...
- Hooking Android System Calls for Pleasure and Benefit
The Android kernel is a powerful ally to the reverse engineer. While regular Android apps are hopele ...
- ios-贝塞尔曲线
git下载地址:git@github.com:lu459700780/UIBezierPath.git 演示: #import "ViewController.h" @interf ...
- 用Django Rest Framework和AngularJS开始你的项目
Reference: http://blog.csdn.net/seele52/article/details/14105445 译序:虽然本文号称是"hello world式的教程&quo ...
- Unity3d学习 基础-关于MonoBehaviour的生命周期
其实在刚接触Unity3D,会有一个疑问,关于Unity3D游戏运行的初始入口在哪?不像Cocos2dx还有个AppDelegate文件可以去理解.而且在刚开始就接触Unity3D时,看到所有脚本中编 ...
- UVa 11747 - Heavy Cycle Edges
题目大意:计算最小生成树有两种算法:一种是kruskal算法,另一种是与之相反的:如果图中存在环,去掉权重最大的边,直到不存在环.输出去掉的那些边. 可以用kruskal算法解决,在判断一条边时如果加 ...
- iOS + UIWebView 实践
1. 调用java script 现在只能实现弹出窗口 [self.m_webView stringByEvaluatingJavaScriptFromString:@"alert(1)&q ...