博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java引用类型作为形参和返回值
阅读量:4649 次
发布时间:2019-06-09

本文共 3755 字,大约阅读时间需要 12 分钟。

一、什么是引用类型

在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("小明爱上了吃面条");            }        });    }}
View Code

 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("老师不抽中华了,爱上了雪茄");            }        });    }}
View Code

三、返回引用类型值

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();    }}
View Code

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();    }}
View Code

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();    }}
View Code

 

转载于:https://www.cnblogs.com/zfg-technology/p/4563760.html

你可能感兴趣的文章
「Python-Django」django 实现将本地图片存入数据库,并能显示在web上
查看>>
线性求欧拉函数
查看>>
鼬的出场集数
查看>>
【CTF WEB】反序列化
查看>>
OSGI
查看>>
【LeetCode】智商题 brainteaser(共3题)
查看>>
eclipse护眼颜色和字体大小设置
查看>>
SQL Server-聚焦在视图和UDF中使用SCHEMABINDING(二十六)
查看>>
NHibernate文档翻译--体系结构
查看>>
Xamarin.Android开发音乐播放器
查看>>
用ASP.NET Web API技术开发HTTP接口(一)
查看>>
原生ajax通过post或者get下载文件,或处理IE浏览器因为后缀不能显示图片
查看>>
Xcode6 管理provisioning profile
查看>>
2.privite私有变量的意义
查看>>
leetcode LRUCache题目
查看>>
10.28&29(NOIP模拟&修正&总结)
查看>>
Matlab图像处理相关
查看>>
得到python对象的真实大小
查看>>
unity的旋转
查看>>
动画处理<并行和串行>
查看>>