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++ 中的形参与返回值
函数调用时,形参对象和返回对象均采用引用方式进行(临时对象作为中介),当一个对象作为参数(非引用)被函数调用时,该对象会通过复制构造函数获得一个临时对象,该临时对象以引用方式传递给函数,简言之,函数会 ...
随机推荐
- 【java】java反射 Field类的研究使用
java反射 Field类的研究使用 user.getClass().getFields() 和 user.getClass().getDeclaredFields(); 的区别是什么?
- Python中使用XMLRPC(入门)
一.简介 RPC是Remote Procedure Call的缩写,翻译成中文为:远程方法调用. 它是一种在本地机器上调用远端机器上的一个过程(方法)的技术,这个过程也被大家称为“分布式计算”,是为了 ...
- iptables 中的SNAT 和MASQUWERADE
NAT 是 network address translation 的缩写 网络地址转换 网络地址转换主要有两种:SNAT和DNAT,即源地址转换和目标地址转换 SNAT:源地址转换 eg:多台pc机 ...
- 【转】Linux 中清空或删除大文件内容的五种方法(truncate 命令清空文件)
原文: http://www.jb51.net/article/100462.htm truncate -s 0 access.log -------------------------------- ...
- PHP防止sql注入-JS注入
一:为了网站数据安全,所有和数据库操作的相关参数必须做相关过滤,防止注入引起的网站中毒和数据泄漏 1.PHP自带效验函数 mysql_real_escape_string() 函数转义 SQL 语句中 ...
- Some perl tips
下面是日常工作中一些代码片段的总结,部分注释是后加的,采用了//这种形式,请勿套用. 1.取得用户输入print("Please input the date range:");$ ...
- Mac OSX下编译安装PostgreSQL
原先使用的是官方提供的安装包,可是安装包会创建postgre这个用户.在登陆界面看的有点不爽,搜索了半天居然没有找到怎样在osx下编译安装的教程,并且假设是依照官方文档的编译安装办法一定会让你崩溃,本 ...
- Linux Java开发环境
一.旧版本JDK卸载 1.卸载系统自带JDK版本 #rpm -qa|grep gcj 查看到如下信息,如图所示: 进行卸载默认安装JDK: #rpm -e --nodeps java-1.4.2- ...
- POJ2536 Gopher II【二分图最大匹配】
题目链接: http://poj.org/problem? id=2536 题目大意: 有N仅仅鼹鼠和M个洞穴,假设鼹鼠在S秒内不可以跑到洞穴,就会被老鹰捉住吃掉. 鼹鼠跑的速度为V米/秒. 已知一个 ...
- 应用程序之UIWebView的使用
UIWebView简介 知识点总结 代码实现 一.UIWebView简介 1.是iOS内置的浏览器控件,可以浏览网页.打开文档等2.能够加载html/htm.pdf.docx.txt等格式的文件3.系 ...