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++ 中的形参与返回值
函数调用时,形参对象和返回对象均采用引用方式进行(临时对象作为中介),当一个对象作为参数(非引用)被函数调用时,该对象会通过复制构造函数获得一个临时对象,该临时对象以引用方式传递给函数,简言之,函数会 ...
随机推荐
- C#日期格式化,时间
日期转化一 为了达到不同的显示效果有时,我们需要对时间进行转化,默认格式为:2007-01-03 14:33:34 ,要转化为其他格式,要用到DateTime.ToString的方法(String, ...
- osg节点统计方法(点数 面数) 【转】
void statusNode(osg::ref_ptr<osg::Node> node,int& verNum,int& faceNum){ osg::ref_ptr&l ...
- org.apache.hadoop.ipc.RemoteException: User: root is not allowed to impersonate root
修改 core-site.xml文件 vim /usr/local/hadoop/etc/hadoop/core-site.xml 增加: <property> <name>h ...
- iptables 的学习资源
慕课网:https://www.imooc.com/video/7617 马哥linux视频:http://edu.51cto.com//center/course/lesson/index?id=9 ...
- 前端存储之Web Sql Database
前言 在上一篇前端存储之indexedDB中说到,我们项目组要搞一个前后端分离的项目,要求在前端实现存储,我们首先找到了indexedDB,而我们研究了一段时间的indexedDB后,发现它并不是很适 ...
- WEB接口测试之Jmeter接口测试自动化 (三)(数据驱动测试) 接口测试与数据驱动
转载:http://www.cnblogs.com/chengtch/p/6576117.html 1简介 数据驱动测试,即是分离测试逻辑与测试数据,通过如excel表格的形式来保存测试数据,用测试脚 ...
- 怪异恼人的java.lang.NoClassDefFoundError: com/sun/mail/util/LineInputStream问题的解决
测试以前做的一个邮件发送类,出现以下问题: Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/m ...
- node - 写返回mime类型
何为mime类型? mime.json { ".323":"text/h323" , ".3gp":"video/3gpp&qu ...
- react-native 项目实战 -- 新闻客户端(2) -- 完善TabBar
1.创建 drawable-xxhdpi 文件夹,保存 TabBar 的 icon图标 android -- app -- src -- main -- res -- drawab ...
- 【Java】Java_18 方法
方法(Method) 设计方法的原则:方法的本意是功能块,就是实现某个功能的语句块的集合. 我们设计方法的时候,最好保持方法的原子性,就是一个方法只完成1个功能,这样利于我们后期的扩展 方法的要点 ...