Java基础之形式参数与返回值问题

形式参数的问题:

       形式参数是基本类型,对实际参数没有影响(简单)

       形式参数是引用类型:

               1>  形式参数是普通类:此时需要的是该类的子类对象

举例:

packageorg.westos.形式参数和返回值的问题;

 

classStudent{

         public void study() {

                   System.out.println("GoodGood Study,Day Day Up...");

         }

}

classStudentDemo{

         //成员方法

         public void method(Student s) {

                   s.study();

         }

}

 

//测试类

publicclass PersonTest {

        

         public static void main(String[] args){

                   //在StudentDemo类中,method方法的形式参数是一个Student类(具体类)

                   //如何调用StudentDemo中的mehtod()方法

                   //创建StudentDemo对象

                   StudentDemo sd = newStudentDemo() ;

                   //需要创建Student的对象

                   sd.method(new Student());

                   System.out.println("----------------");       

                   //链式编程

                   //匿名对象是可以作为参数传递的

                   new StudentDemo().method(newStudent());

         }

}

              2>  形式参数是一个抽象类:此时这块需要的是该抽象类的子类对象   (抽象类多态...)

举例:

package org.westos.形式参数和返回值的问题;

 

//抽象的Person类

abstract class Person{

         publicvoid teach() {

                   System.out.println("今天天气不错,适合踢球...");

         }

}

 

class PersonDemo{

         publicvoid method(Person p) { //不能直接创建对象 Person p =new Person();  可以采用抽象类多态的形式实现

                   p.teach();

         }

}

 

//需要提供Pereson类的子类

class Teacher extends Person{

        

}

//测试类

public class TeacherTest {

 

         publicstatic void main(String[] args) {

                   //需求:需要调用PersonDemo类中的method()方法

                   //创建PersonDemo对象

                   PersonDemopd = new PersonDemo() ;

                   //可以通过子类进行实例化

                   Personp = new Teacher();

                   pd.method(p);

         }

}

                 接口:需要提供接口的子实现类,可以通过子实现类进行实例化:接口多态...

举例:

package org.westos.形式参数和返回值的问题;

 

//定义一个接口

interface Inter{

         publicabstract void study() ;

}

 

class InterDemo{

         publicvoid show(Inter i) { //需要创建该接口对象,不能直接实例化 Inter i = new Inter() ;错误的

                                     //需要提供接口的子实现类,可以通过子实现类进行实例化:接口多态...

                   i.study();

         }

}

 

//子实现类

class Student2 implements Inter{

 

         @Override

         publicvoid study() {

                   System.out.println("GoodGood Study ,Day Day Up ...");

         }

        

}

 

//测试类

public class StudentTest {

 

         publicstatic void main(String[] args) {

                   //需求:需要调用InterDemo这个了中的show()方法,如何调用

                   //创建InterDemo类的对象

                   InterDemoid = new InterDemo() ;

                   //接口多态的形式创建Inter对象

                   Interi = new Student2() ;

                   id.show(i);       

         }

}

 

 

 

 

返回值问题:

                如果返回值基本类型:用对应的基本类型去接收数据即可!

                 引用类型:

                           1>返回值是具体类:     需要的是该类的对象

举例:

package org.westos.形式参数和返回值的问题;

 

class Student3{

         publicvoid study() {

                   System.out.println("GoodGood Study ,Day Day Up ...");

         }

}

class StudentDemo3{

         publicint show() {

                   return100 ;

         }

         publicStudent3 method() {

                   //需要提供一个该具体类的对象,是一个具体类的情况

                   Student3s = new Student3();

                   returns ;

         }

}

 

//测试类

public class PersonTest2 {

 

         publicstatic void main(String[] args) {

                  

                   //调用StudentDemo3中的metohd方法

                   Student3s = new StudentDemo3().method() ;

                   s.study();

                   System.out.println("-------------------");

                  

                   StudentDemo3sd = new StudentDemo3() ;

                   Student3s2 = sd.method() ;

                   s2.study();

         }

}

                        2> 返回值是抽象类:那么返回需要的结果是需要当前抽象类的子类对象 抽象类多态

举例:

package org.westos.形式参数和返回值的问题;

 abstract class Person2{

          public void show() {

                    System.out.println("今天天气不错");

          }

 }

class Teacher2 extends Person2{

          

 }

 class PersonDemo2{

          public Person2 method() {

                    //返回值是一个抽象类

//               return new Person2() ; 抽象类不能实例化 ,需要提供该抽象类的子类

                    //抽象类多态的形式创建对象

//               Person2 p = new Teacher2() ;

//               return p ;

                    

                    return new Teacher2() ;         //匿名对象,还是通过子类实例化

          }

 }

 

 //测试类

public class StudentTest2 {

 

         publicstatic void main(String[] args) {

                  

                   PersonDemo2pd = new PersonDemo2() ;

                   Person2p = pd.method() ;  //  Person2 p = new new Teacher2() ;

                   p.show();

         }

}

                        3>返回值是 接口:提供接口的子实现类

举例:

package org.westos.形式参数和返回值的问题;

 

interface Inter2{

         publicabstract void study();

}

class InterImpl implements Inter2{

 

         @Override

         publicvoid study() {

                   System.out.println("好好学习,天天向上...");

         }

        

}

class InterDemo2{

         publicstatic Inter2 method() {

                  

         //接口不能实例化,提供接口的子实现类

         Inter2i = new InterImpl();

         returni ;

         }

}

 

public class TeacherTest2 {

        

         publicstatic void  main(String[] args) {

                   InterDemo2id = new InterDemo2() ;

                   Inter2i = id.method() ; //Inter2 i = new InterImpl() 接口多态的形式

                   i.study();

                  

                   Inter2i2 = new InterDemo2().method() ;

         }

}


阅读更多
个人分类: Javase
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭