Java(20)参数传递之类名、抽象类、接口
2024-08-30 13:42:28
作者:季沐测试笔记
原文地址:https://www.cnblogs.com/testero/p/15201632.html
博客主页:https://www.cnblogs.com/testero
1 类名作为形参和返回值
1.1 类名作为方法的形参
方法的形参是类名,其实需要的是该类的对象
实际传递的是该对象的【地址值】
1.2 类名作为方法的返回值
方法的返回值是类名,其实返回的是该类的对象
实际传递的,也是该对象的【地址值】
示例代码:
class Cat {
public void eat() {
System.out.println("猫吃鱼");
}
}
class CatOperator {
public void useCat(Cat c) { //Cat c = new Cat();
c.eat();
}
public Cat getCat() {
Cat c = new Cat();
return c;
}
}
public class CatDemo {
public static void main(String[] args) {
//创建操作类对象,并调用方法
CatOperator co = new CatOperator();
Cat c = new Cat();
co.useCat(c); Cat c2 = co.getCat(); //new Cat()
c2.eat();
}
}
2 抽象类作为形参和返回值
抽象类作为形参和返回值
- 方法的形参是抽象类名,其实需要的是该抽象类的子类对象
- 方法的返回值是抽象类名,其实返回的是该抽象类的子类对象
示例代码:
abstract class Animal {
public abstract void eat();
}
class Cat extends Animal {
@Override
public void eat() {
System.out.println("猫吃鱼");
}
}
class AnimalOperator {
public void useAnimal(Animal a) { //Animal a = new Cat();
a.eat();
}
public Animal getAnimal() {
Animal a = new Cat();
return a;
}
}
public class AnimalDemo {
public static void main(String[] args) {
//创建操作类对象,并调用方法
AnimalOperator ao = new AnimalOperator();
Animal a = new Cat();
ao.useAnimal(a); Animal a2 = ao.getAnimal(); //new Cat()
a2.eat();
}
}
3 接口名作为形参和返回值
接口作为形参和返回值
- 方法的形参是接口名,其实需要的是该接口的实现类对象
- 方法的返回值是接口名,其实返回的是该接口的实现类对象
示例代码:
interface Jumpping {
void jump();
}
class JumppingOperator {
public void useJumpping(Jumpping j) { //Jumpping j = new Cat();
j.jump();
}
public Jumpping getJumpping() {
Jumpping j = new Cat();
return j;
}
}
class Cat implements Jumpping {
@Override
public void jump() {
System.out.println("猫可以跳高了");
}
}
public class JumppingDemo {
public static void main(String[] args) {
//创建操作类对象,并调用方法
JumppingOperator jo = new JumppingOperator();
Jumpping j = new Cat();
jo.useJumpping(j); Jumpping j2 = jo.getJumpping(); //new Cat()
j2.jump();
}
}
最新文章
- springmvc注解事例
- Linux命令学习总结:rm命令
- serialize和unserialize函数
- phonegap + Framework7 之 ios 推送跳转测试
- LevelDB(v1.3) 源码阅读之 Arena(内存管理器)
- UEdit初始化加载内容偶尔失败,解决
- 初学java之触发响应事件举例子
- BOOL布尔类型
- VS 2010下单元测试
- asp.net中Timer定时器在web中无刷新的使用
- (转)sql中 in 、not in 、exists、not exists 用法和差别
- [LeetCode]题解(python):146-LRU Cache
- centos6.5 安装python3.5
- linux中Cron定时任务系统命令详解
- Testlink插件工具
- Python env使用(virtualenv)
- ue4 Skeletal Mesh编辑器
- 【2013Esri全球用户大会精彩案例】GIS for Philadelphia’s Finest --费城警用GIS
- Android开发中遇到的问题(二)——新建android工程的时候eclipse没有生成MainActivity和layout布局
- S老师 打飞机 学习