JavaSE学习笔记(九)—— 形式参数和返回值的问题深入研究

一、形式参数

  形式参数分为基本类型和引用类型。其中基本类型太简单,此处不做讲解。  

  引用类型的形式参数分为:类名、抽象类和接口三大类

1.1 形式参数是类名

  当形式参数是类名(匿名对象的时候其实介绍过了),需要的是该类的对象

复制代码
class Student {
    public void study() {
        System.out.println("Good Good Study,Day Day Up");
    }
}

class StudentDemo {
    //形式参数是类名
    public void method(Student s) { //ss; ss = new Student();  Student s = new Student();
        s.study();
    }
}

class StudentTest {
    public static void main(String[] args) {
        //需求:我要测试Student类的study()方法
        Student s = new Student();
        s.study();
        System.out.println("----------------");
        
        //需求2:我要测试StudentDemo类中的method()方法
        StudentDemo sd = new StudentDemo();
        Student ss = new Student();
        sd.method(ss);
        System.out.println("----------------");
        
        //匿名对象用法
        new StudentDemo().method(new Student());
    }
}
复制代码

1.2 形式参数是抽象类

  形式参数是抽象类时,需要的是该抽象类的子类对象

复制代码
abstract class Person {
    public abstract void study();
}

class PersonDemo {
    //形式参数是抽象类
    public void method(Person p) {//p; p = new Student();  Person p = new Student(); //多态
        p.study();
    }
}

//定义一个具体的学生类
class Student extends Person {
    public void study() {
        System.out.println("Good Good Study,Day Day Up");
    }
}

class PersonTest {
    public static void main(String[] args) {
        //目前是没有办法的使用的
        //因为抽象类没有对应的具体类
        //那么,我们就应该先定义一个具体类
        //需求:我要使用PersonDemo类中的method()方法
        PersonDemo pd = new PersonDemo();
        Person p = new Student();
        pd.method(p);
    }
}
复制代码

1.3 形式参数是接口

  形式参数是接口时,需要的是该接口的实现类对象

复制代码
//定义一个爱好的接口
interface Love {
    public abstract void love();
}

class LoveDemo {
    //形式参数是接口
    public void method(Love l) { //l; l = new Teacher();  Love l = new Teacher(); 多态
        l.love();
    }
}

//定义具体类实现接口
class Teacher implements Love {
    public void love() {
        System.out.println("老师爱学生,爱Java,爱林青霞");
    }
}

class TeacherTest {
    public static void main(String[] args) {
        //需求:我要测试LoveDemo类中的love()方法
        LoveDemo ld = new LoveDemo();
        Love l = new Teacher();
        ld.method(l);
    }
}
复制代码

二、返回值类型

  返回值类型分为基本类型和引用类型。其中基本类型太简单,这里不做讲解。

  引用类型的返回值分为:类、抽象类和接口。

2.1 返回值是类

  返回值是类时,返回的是该类的对象

复制代码
class Student {
    public void study() {
        System.out.println("Good Good Study,Day Day Up");
    }
}

class StudentDemo {
    //返回值是类
    public Student getStudent() {
        //Student s = new Student();
        //Student ss = s;
        
        //Student s = new Student();
        //return s;
        return new Student();
    }
}

class StudentTest2 {
    public static void main(String[] args) {
        //需求:我要使用Student类中的study()方法
        //但是,这一次我的要求是,不要直接创建Student的对象
        //让你使用StudentDemo帮你创建对象
        StudentDemo sd = new StudentDemo();
        Student s = sd.getStudent(); //new Student(); Student s = new Student();
        s.study();
    }
}
复制代码

2.2 返回值是抽象类

  返回值是抽象类时,返回的是该抽象类的子类对象。

复制代码
abstract class Person {
    public abstract void study();
}

class PersonDemo {
    //返回值是抽象类
    public Person getPerson() {
        //Person p = new Student();
        //return p;
        
        //返回该抽象类的子类对象
        return new Student();
    }
}

class Student extends Person {
    public void study() {
        System.out.println("Good Good Study,Day Day Up");
    }
}

class PersonTest2 {
    public static void main(String[] args) {
        //需求:我要测试Person类中的study()方法
        PersonDemo pd = new PersonDemo();
        Person p = pd.getPerson(); //new Student();  Person p = new Student(); 多态
        p.study();
    }
}
复制代码

2.3 返回值是接口

  返回值是接口时,返回的是该接口的实现类的对象

复制代码
//定义一个爱好的接口
interface Love {
    public abstract void love();
}

class LoveDemo {
    // 返回值是接口    
    public Love getLove() {
        //Love l = new Teacher();
        //return l;
        
        //返回的是该接口的实现类的对象
        return new Teacher();
    }
}

//定义具体类实现接口
class Teacher implements Love {
    public void love() {
        System.out.println("老师爱学生,爱Java,爱林青霞");
    }
}

class TeacherTest2 {
    public static void main(String[] args) {
        //如何测试呢?
        LoveDemo ld = new LoveDemo();
        Love l = ld.getLove(); //new Teacher(); Love l = new Teacher(); 多态
        l.love();
    }
}
复制代码

三、链式编程

  链式编程:每次调用完毕方法后,返回的是一个对象。

复制代码
class Student {
    public void study() {
        System.out.println("Good Good Study,Day Day Up");
    }
}

class StudentDemo {
    public Student getStudent() {
        return new Student();
    }
}

class StudentTest3 {
    public static void main(String[] args) {
        //如何调用的呢?
        StudentDemo sd = new StudentDemo();
        //Student s = sd.getStudent();
        //s.study();
        
        //链式编程
        sd.getStudent().study();
    }
}
复制代码

 

posted @   yi0123  阅读(360)  评论(0编辑  收藏  举报
编辑推荐:
· 大模型 Token 究竟是啥:图解大模型Token
· 35岁程序员的中年求职记:四次碰壁后的深度反思
· 继承的思维:从思维模式到架构设计的深度解析
· 如何在 .NET 中 使用 ANTLR4
· 后端思维之高并发处理方案
阅读排行:
· BotSharp + MCP 三步实现智能体开发
· BotSharp 5.0 MCP:迈向更开放的AI Agent框架
· 分享 3 款基于 .NET 开源且免费的远程桌面工具
· 在线聊天系统中的多窗口数据同步技术解密
· 5. RabbitMQ 消息队列中 Exchanges(交换机) 的详细说明
点击右上角即可分享
微信分享提示