形式参数与返回值问题

package org.westos_形式参数和返回值问题研究;
/*如果形式参数是引用类型:
                            具体类类:如果形式参数是一个具体类,那么需要创建该类对象
                            抽象类:如果形式参数是抽象类的情况,那么需要自定义一个抽象类的子类,来进行实例化(创建对象)!,创建对象的实质:抽象类多态!
     *                      接口:
     **/
//声明一个抽象类
abstract class Person{
    public abstract void study() ;

}

//定义一个PersonDemo类
class PersonDemo{
    //成员方法
    public void method(Person p){//Person p = new Perosn();//错误的:抽象类不能实例化---->抽象类的多态:Person p = new Student2() ;
        p.study() ;
    }
}

//自定义一个抽象的子类来进行Person的实例化
class Student2 extends Person{

    @Override
    public void study() {
        System.out.println("good good study ,day day up!");
    }

}

//测试类
public class PersonTest {
    public static void main(String[] args) {
        //需求:调用PersonDemo类中method()方法
        //创建PersonDemo类的对象
//      PersonDemo pd = new PersonDemo() ;
        pd.method(p) ;
//      //需要使用抽象类多态来实例化
//      Person  p = new Student2() ;
//      pd.method(p) ;

        //链式编程:
        new PersonDemo().method(new Student2()) ;
    }
}
package org.westos_形式参数和返回值问题研究;
/**
 * 返回值:
 *              具体类:直接返回该类对象(通常实际开发中使用的是匿名对象)
 *              抽象类:返回值如果是抽象类,需要的返回是该抽象类的子类对象
 *              接口:
 * */
abstract class Person2{
    public abstract void show() ;
}

//定义PersonDemo2类
class PersonDemo2{
    public Person2 method(){ // 如果一个方法的返回值是一个抽象类,需要的返回是该抽象类的子类对象
        /*Person2 p = new Teacher() ;
        return p ;*/
        return new Teacher() ;//Person2 p = new Teacher() ;
    }
}

//抽象类的子类
class Teacher extends Person2{

    @Override
    public void show() {
        System.out.println("老师爱高圆圆,爱生活...");
    }

}

//测试类
public class PersonTest2 {
    public static void main(String[] args) {
        //需求:要调用PersonDemo2这个类中的method()方法
        PersonDemo2 pd = new PersonDemo2() ;
        Person2 p = pd.method() ;//pd.method();return new Teacher() ----->Person2 p = new Teacher() ;
        p.show() ;
        System.out.println("----------------");

        //链式编程
        Person2 p2 = new PersonDemo2().method() ;//链式编程
        p2.show() ;
    }
}
package org.westos_形式参数和返回值问题研究;
/**
 * 形式参数:
 *      基本数据类型,你要什么数据类型,在实际传参的时候就传什么数据类型;形式参数的改变对实际参数没有影响(String是引用类型和基本数据类型的效果一样String s ="abc")
 *      如果形式参数是引用类型:
 *                      具体类类:如果形式参数是一个具体类,那么需要创建该类对象
 *                      抽象类:
 *                      接口:
 * 
 * 返回值:
 *              具体类:直接返回该类对象(通常实际开发中使用的是匿名对象)
 *              抽象类:
 *              接口:
 * */

class Demo{
    //成员方法
    public float sum(float a,float b){
        return  (a + b) ;
    }
}
//定义一个类
class Student{
    public void show(){
        System.out.println("好好学习,天天向上...");
    }
}

//class StudentDemo{
//  public void method(Student s){//形式参数是一个引用类型,那么需要该类对象Student s = new Student() ;
//      s.show() ;
//  }
//}

class StudentDemo{
    public Student method(){//如果方法的返回值是一个具体的类,那么需要该类对象
        /*Student s = new Student() ;
        return s ;*/

        return new Student() ;
    }
}
//测试类
public class StudentTest {
    public static void main(String[] args) {
        //两个实际参数
        /*int a = 10 ;
        int b = 20 ;*/

        float a = 10.0F;
        float b = 12.34F;
        //需求:需要调用sum来进行求和
        Demo d = new Demo() ;
        float result = d.sum(a, b) ;
        System.out.println("result:"+result);
        System.out.println("------------------------");

        //需求:需要调用StudentDemo这个类中method()方法
        //需要创建StudentDemo这个类的对象
//      StudentDemo sd = new StudentDemo() ;
//      //创建Student类的对象
//      Student s = new Student() ;
        sd.method(s) ;//当前s变量不可用
//      sd.method(s) ;//s就代表Student类的对象,把空间地址值作为参数传递

        //返回值是具体的类:
        //创建StudentDemo类对象
        StudentDemo sd = new StudentDemo() ;
        Student s = sd.method() ;
        s.show();
    }
}
package org.westos_形式参数和返回值问题研究;
/*如果形式参数是引用类型:
    具体类类:如果形式参数是一个具体类,那么需要创建该类对象
    抽象类:如果形式参数是抽象类的情况,那么需要自定义一个抽象类的子类,来进行实例化(创建对象)!,创建对象的实质:抽象类多态!
*   接口:如果形式参数是接口情况,那么需要自定义一个接口的子实现类,然后通过接口多态的形式给接口进行实例化!
**/
//定义一个接口
interface Inter{
    public abstract void love() ;
}

//定义一个类
class TeacherDemo{
    public void method(Inter i){//接口不能实例化:  如果一个方法的形式参数是一个接口,那么需要创建该接口的子实现类对象
        i.love() ;
    }
}

//由于接口不能实例化,需要定义接口的子实现类
class Student3 implements Inter{

    @Override
    public void love() {
        System.out.println("学生爱学习,爱java...");
    }

}
//测试类
public class TeacherTest {
    public static void main(String[] args) {
        //需求:需要调用TeacherDemo类中的method()方法
        //创建该类对象
        TeacherDemo td = new TeacherDemo() ;
        //创建该接口对象:通过接口多态
        Inter i = new Student3() ; //接口多态
    /*  Inter i = new Inter() { //匿名内部类 

            @Override
            public void love() {
                System.out.println("学生爱学习,爱java...");
            }
        };*/

        td.method(i) ;
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值