Java引用类型作为形参和返回值
一、什么是引用类型
在Java中引用类型包括三种:类、抽象类、接口。
二、引用类型作为形参使用
1、类作为形参
/**
* 类作为形参,实际传递的是该类的对象
*/
class Student { public void study() {
System.out.println("Good Good Study, Day Day Up");
}
} class StudentDemo { public void show(Student s) {
s.study();
}
} public class StudentTest { public static void main(String[] args) { StudentDemo sd = new StudentDemo();
Student s = new Student();
sd.show(s);
}
}
2、抽象类作为形参
/**
* 抽象类作为形参,传递的是实现该抽象类的子类对象
*/
abstract class Person { public abstract void eat();
} class XiaoMing extends Person { @Override
public void eat() {
// TODO Auto-generated method stub
System.out.println("小明爱吃米饭");
}
} class PersonDemo { public void show(Person p) {
p.eat();
}
} public class PersonTest { public static void main(String[] args) {
PersonDemo pd = new PersonDemo();
// 方式一、传递的是实现该抽象类的子类对象
Person p = new XiaoMing(); // 多态
pd.show(p);
System.out.println("------------------");
// 方式二、直接实现抽象类,传递匿名子类对象
pd.show(new Person() { @Override
public void eat() {
// TODO Auto-generated method stub
System.out.println("小明爱上了吃面条");
}
});
}
}
3、接口作为形参
/**
* 接口作为形参,传递的是实现该接口的子类对象
*/
interface Teacher {
// 接口 like a 的关系,并不是所有 Teacher 都抽烟
public abstract void smoke();
} class TeacherZhang implements Teacher { @Override
public void smoke() {
// TODO Auto-generated method stub
System.out.println("老师爱抽中华");
}
} class TeacherDemo { public void show(Teacher t) {
t.smoke();
}
} public class TeacherTest { public static void main(String[] args) {
TeacherDemo td = new TeacherDemo();
// 方式一、传递的是实现该接口的子类对象
Teacher t = new TeacherZhang(); // 多态
td.show(t);
System.out.println("------------------");
// 方式二、直接实现接口,传递匿名子类对象
td.show(new Teacher() { @Override
public void smoke() {
// TODO Auto-generated method stub
System.out.println("老师不抽中华了,爱上了雪茄");
}
});
}
}
三、返回引用类型值
1、返回类类型值,实际返回的是该类的对象
/**
* 类作为返回值,实际返回的是该类的对象
*/
class Student { public void study() {
System.out.println("Good Good Study, Day Day Up");
}
} class StudentDemo { public Student getInstance() {
return new Student();
}
} public class StudentTest2 { public static void main(String[] args) {
StudentDemo sd = new StudentDemo();
Student s = sd.getInstance();
s.study();
}
}
2、返回抽象类类型值,实际返回的是实现该抽象类子类的对象
/**
* 抽象类作为返回值,实际返回的是实现该抽象类的子类对象
*/
abstract class Person { public abstract void eat();
} class XiaoMing extends Person { @Override
public void eat() {
// TODO Auto-generated method stub
System.out.println("小明爱吃米饭");
}
} class PersonDemo { public Person getIntance() {
return new XiaoMing();
}
} public class PersonTest2 { public static void main(String[] args) {
PersonDemo pd = new PersonDemo();
Person p = pd.getIntance();
p.eat();
}
}
3、返回接口类型值,实际返回的是实现该接口子类的对象
/**
* 接口作为返回值,实际返回的是实现该接口的子类对象
*/
interface Teacher {
// 接口 like a 的关系,并不是所有 Teacher 都抽烟
public abstract void smoke();
} class TeacherZhang implements Teacher { @Override
public void smoke() {
// TODO Auto-generated method stub
System.out.println("老师爱抽中华");
}
} class TeacherDemo { public Teacher getIntance() {
return new TeacherZhang();
}
} public class TeacherTest2 {
public static void main(String[] args) {
TeacherDemo td = new TeacherDemo();
Teacher t = td.getIntance();
t.smoke();
}
}
Java引用类型作为形参和返回值的更多相关文章
- Java基础——引用类型作为形参与返回值
一.具体类名作为形参与返回值 1.方法的形参是类名,其实需要的是该类的对象 比如有一个具体的猫类,我使用另一个类使用猫类的方法 public class CatOperator { public ...
- Java的Object.hashCode()的返回值到底是不是对象内存地址?
关于这个问题,查阅了网上的资料,发现证明过程太繁琐,这里我用了反证法. java.lang.Object.hashCode()的返回值到底是不是对象内存地址? hashCode契约 说到这个问题,大家 ...
- Java基础00-形参和返回值22
1. 形参和返回值 1.1 类名作为形参和返回值 1.2 抽象类名作为形参和返回值 代码示例: 方法的形参是抽象类名 抽象动物类:定义了一个抽象的eat方法 动物的操作类:创建一个useAnimal方 ...
- Java - 关于基础数据类型的形参和返回值
1. 当基础数据类型被当作形参时,最好使用其包装类,因为这样可方便调用者传参(基础数据类型亦或是其包装类都可) 2. 当基础数据类型被当作返回值时,最好使用原型,因为这样可以方便调用者接收返回值( ...
- 慕课网-Java入门第一季-7-5 Java 中带参无返回值方法的使用
public class HelloWorld { public static void main(String[] args) { // 创建对象,对象名为hello HelloWorld hell ...
- Java 中带参无返回值方法的使用
有时方法的执行需要依赖于某些条件,换句话说,要想通过方法完成特定的功能,需要为其提供额外的信息才行.例如,现实生活中电饭锅可以实现“煮饭”的功能,但前提是我们必须提供食材,如果我们什么都不提供,那就真 ...
- LY.JAVA面向对象编程.形式参数和返回值
2018-07-09 13:29:16 运动员和教练案例 /* 教练和运动员案例(学生分析然后讲解) 乒乓球运动员和篮球运动员. 乒乓球教练和篮球教练. 为了出国交流,跟乒乓球相关的人员都需要学习英语 ...
- 慕课网-Java入门第一季-7-3 Java 中无参带返回值方法的使用
来源:http://www.imooc.com/code/1579 如果方法不包含参数,但有返回值,我们称为无参带返回值的方法. 例如:下面的代码,定义了一个方法名为 calSum ,无参数,但返回值 ...
- C++ 中的形参与返回值
函数调用时,形参对象和返回对象均采用引用方式进行(临时对象作为中介),当一个对象作为参数(非引用)被函数调用时,该对象会通过复制构造函数获得一个临时对象,该临时对象以引用方式传递给函数,简言之,函数会 ...
随机推荐
- andriod 剪贴板操作
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=&quo ...
- python urllib2使用细节
刚好用到,这篇文章写得不错,转过来收藏. 转载自 道可道 | Python 标准库 urllib2 的使用细节 Python 标准库中有很多实用的工具类,但是在具体使用时,标准库文档上对使用细节 ...
- 项目笔记:导出XML和导出全部XML功能
前台代码: //导出一条Xml function btn_createXml(){ var title =$("#editButton").attr("title&quo ...
- thrift.transport.TTransport.TTransportException: Could not start SASL: Error in sasl_client_start (-4) SASL(-4): no mechanism available: No worthy mechs found
thrift.transport.TTransport.TTransportException: Could not start SASL: Error in sasl_client_start (- ...
- Hadoop部署记录
1.准备Linux环境 1.0先将虚拟机的网络模式选为NAT 1.1修改主机名 vi /etc/sysconfig/network NETWORKING=yes HOSTNAME=node1 ### ...
- requirejs主流程解读
近期读了下requirejs源代码,那叫一个复杂啊(相对于seajs来说).整理出了逻辑的主要部分的流程图,感兴趣的能够看下.欢迎批评指正~ http://www.gliffy.com/go/publ ...
- datatables插件适用示例
本文共四部分:官网 | 基本使用|遇到的问题|属性表 一:官方网站:[http://www.datatables.NET/] 二:基本使用:[http://www.guoxk.com/node/jQu ...
- Servlet基本用法二接口和类
转自:http://www.cnblogs.com/xujian2014/p/4536168.html 一.摘要 本文主要简单介绍开发Servlet需要用到的接口和类. 二.ServletReques ...
- Mysql5.6压缩包安装到windows&& 卸载命令
1.根目录下有一个my-default.ini,复制一下,重命名为my.ini,然后改一下my.ini为符合你情况的配置,一般只需要改basedir .datadir .port ,注意前边的井号去掉 ...
- Jmeter返回org.apache.http.NoHttpResponseException: The target server failed to respond解决办法
1.问题:这段时间使用jmeter压测时(300个请求,持续压300s,加速期10s),压力平稳时偶然错误,部分请求失败事务报错信息如下 org.apache.http.NoHttpResponseE ...