面向对象(15):形式参数和返回值问题案例
2021/12/14 23:17:30
本文主要是介绍面向对象(15):形式参数和返回值问题案例,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
面向对象(15):形式参数和返回值问题案例
一、形式参数
形式参数: (1)基本数据类型:byte、short、int、long、float、double、char、boolean (2)引用数据类型:类、接口、数组、抽象类
1、当类作为形参:实际上传的是该类的对象的地址值
class Student{ public void study(){ System.out.println("好好学习天天向上"); } } class StudentDemo{ //但凡今后看到一个方法的参数是一个类的类型传参的时候 //实际上传的是该类的对象的地址值 public void fun(Student s){ s.study(); } } public class StudentTest { public static void main(String[] args) { StudentDemo sd = new StudentDemo(); //使用匿名对象传参 sd.fun(new Student()); } } 执行结果如下: 好好学习天天向上 Process finished with exit code 0
2、当抽象类作为方法的形式参数的时候,使用多态的形式创建对象
//抽象类 abstract class Person{ public abstract void study(); } //具体的类 class Student2 extends Person { //重写抽象类中的方法 @Override public void study() { System.out.println("好好学习天天向上"); } } class PersonDemo{ //将来看到当一个抽象方法作为形式参数类型的时候 //实际上需要的是子类实现对象的地址值,利用多态的性质 public void fun(Person p){ p.study(); } } //测试类 public class PersonTest { public static void main(String[] args) { PersonDemo pd = new PersonDemo(); //使用匿名对象传参 pd.fun(new Student2());//将抽象类的子类对象的地址值传进去 } } 执行结果如下: 好好学习天天向上 Process finished with exit code 0
3、当接口作为方法的形式参数的时候,使用接口多态的形式创建对象
interface Person2{ public abstract void study(); } class Teacher implements Person2{ @Override public void study() { System.out.println("好好学习天天向上"); } } class TeacherDemo{ //将来看到当接口作为形式参数传入的时候 //实际上需要的是该接口的实现类的对象的地址值,利用接口多态的性质 public void fun(Person2 person2){ // Person2 person2 = new Teacher(); person2.study(); } } public class TeacherTest { public static void main(String[] args) { TeacherDemo td = new TeacherDemo(); td.fun(new Teacher()); } } 执行结果如下: 好好学习天天向上 Process finished with exit code 0
二、返回值类型
返回值: (1)基本数据类型:byte、short、int、long、float、double、char、boolean (2)引用数据类型:类、接口、抽象类
1、当类作为返回值,返回的结果是什么?
当类作为方法的返回值类型的时候,返回是实际上是该类对象的地址值
class Student3{ public void study(){ System.out.println("好好学习天天向上"); } } class StudentDemo3{ public Student3 fun(){ //return new Student3(); //当类作为方法的返回值类型的时候,返回是实际上是该类对象的地址值 Student3 s = new Student3(); return s; } } public class StudentTest2 { public static void main(String[] args) { StudentDemo3 sd = new StudentDemo3(); Student3 s = sd.fun(); s.study(); } }
2、当抽象类作为返回值,返回的结果是什么?
需要的是该抽象类子类的对象
abstract class Person3{ public abstract void study(); } class PersonDemo3{ public Person3 getPerson(){ //抽象类不能实例化 //Person3 person3 = new Person3(); //return person3; //Doctor doctor = new Doctor();//该方法可行 //return doctor; Person3 person3 = new Doctor();//建议使用该方法 return person3; } } class Doctor extends Person3{ @Override public void study() { System.out.println("医生学习医术"); } } public class PersonTest2 { public static void main(String[] args) { PersonDemo3 pd3 = new PersonDemo3(); Person3 person3 = pd3.getPerson(); //Person3 person3 = new Doctor(); person3.study(); } } 执行结果如下: 医生学习医术 Process finished with exit code 0
3、当接口作为返回值,返回的结果是什么?
需要的是实现该接口的类的对象
interface PlayGame{ public abstract void playLoL(); } class Teacher2 implements PlayGame{ @Override public void playLoL() { System.out.println("老师打英雄联盟"); } } class TeacherDemo2{ public PlayGame getPlayGame(){ PlayGame pg = new Teacher2(); return pg; } } public class TeacherTest2 { public static void main(String[] args) { /* TeacherDemo2 td2 = new TeacherDemo2(); //使用接口多态 PlayGame pg = td2.getPlayGame(); pg.playLoL(); */ /* td2用new TeacherDemo2()替代,得: PlayGame pg = new TeacherDemo2().getPlayGame(); pg.playLoL(); pg用new TeacherDemo2().getPlayGame();替代,得: new TeacherDemo2().getPlayGame().playLoL(); */ //链式编程(后面大家会学习scala,spark,flink) new TeacherDemo2().getPlayGame().playLoL(); } } 执行结果如下: 老师打英雄联盟 Process finished with exit code 0
这篇关于面向对象(15):形式参数和返回值问题案例的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-27消息中间件底层原理资料详解
- 2024-11-27RocketMQ底层原理资料详解:新手入门教程
- 2024-11-27MQ底层原理资料详解:新手入门教程
- 2024-11-27MQ项目开发资料入门教程
- 2024-11-27RocketMQ源码资料详解:新手入门教程
- 2024-11-27本地多文件上传简易教程
- 2024-11-26消息中间件源码剖析教程
- 2024-11-26JAVA语音识别项目资料的收集与应用
- 2024-11-26Java语音识别项目资料:入门级教程与实战指南
- 2024-11-26SpringAI:Java 开发的智能新利器