您现在的位置是:首页 > 正文

形式参数和返回值的问题深入研究

2024-01-30 19:32:09阅读 0

形式参数

形式参数:
    基本类型(太简单,不是我今天要讲解的)
    引用类型
        类名:(匿名对象的时候其实我们已经讲过了)需要的是该类的对象
        抽象类:需要的是该抽象的类子类对象
        接口:需要的是该接口的实现类对象
/*类名作为形式参数*/
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());
    }
}
/*抽象类作为形式参数*/
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);
    }
}
/*接口作为形式参数*/
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);
    }
}

返回值

返回值类型
    基本类型:(基本类型太简单,我不准备讲解)
    引用类型:
        类:返回的是该类的对象
        抽象类:返回的是该抽象类的子类对象
        接口:返回的是该接口的实现类的对象
/*类作为返回值*/
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();
    }
}
/*抽象类作为返回值*/
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();
    }
}
/*接口作为返回值*/
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();
    }
}

网站文章

  • SpringBoot整合Canal1.1.6并同步数据到Redis(超详细和很多踩坑点)

    SpringBoot整合Canal1.1.6并同步数据到Redis(超详细和很多踩坑点)

    SpringBoot初步整合Canal

    2024-01-30 19:32:03
  • 计算机组成原理怎么考试,计算机组成原理考试及答案

    《计算机组成原理考试及答案》由会员分享,可在线阅读,更多相关《计算机组成原理考试及答案(2页珍藏版)》请在人人文库网上搜索。1、一、单选题1.目前我们所说的个人台式商用机属于(4.微型机)2.(4.移...

    2024-01-30 19:31:33
  • Eclipse 显示 Server 面板

    Eclipse 显示 Server 面板

    Eclipse 显示 Server 面板 2018年01月13日 08:09:27 mystonelxj 阅读数:1884 版权声明:未经博主允许,请勿转载原创,谢谢! https://blog.csdn.net/mystonelxj/article/details/79049259 在做web工程的时候,有时候server面板会不留意关闭了。需要手动将其打开,便于做代码的运行。 具体做...

    2024-01-30 19:31:26
  • Android面试送分题:这份354页笔记的Android进阶知识+大厂高频面试题,已拿offer

    Android面试送分题:这份354页笔记的Android进阶知识+大厂高频面试题,已拿offer

    程序员与别的专业有所不同,其他专业都是越老越香,而程序员却是一个例外,因为计算机技术更新太快,而且工作强度很大,因此大部分程序员只会写 3 年代码。3 年后要不晋升做项目经理,要么转行,个别研究所除外...

    2024-01-30 19:31:19
  • CSS的三大特性总结

    CSS的三大特性总结

    CSS的三大特性:继承性,层叠性,优先级

    2024-01-30 19:30:53
  • C++中的Split函数(字符串自动分割)

    函数原型:C/C++中的Split函数是strtok(),其函数原型如下: char * strtok (char * str, const char * delimiters); 函数说明 :strtok()用来将字符串分割成一个个片段。参数str指向欲分割的字符串,参数delimiters则为分割字符串,当strtok()在参数str的字符串中发现到参数delimiters的分割字符时则

    2024-01-30 19:30:46
  • postgresql子查询优化(提升子查询)

    问题背景 在开发项目过程中,客户要求使用gbase8s数据库(基于informix),简单的分页页面响应很慢。排查发现分页sql是先查询出数据在外面套一层后再取多少条,如果去掉嵌套的一层,直接获取则很快。日常使用中postgresql并没有这样的操作也很快,这是为什么呢? 说明 在数据库实现早期,查询优化器对子查询一般采用嵌套执行的方式,即父查询中的每一行,都要执行一次子查询,这样子查询会执...

    2024-01-30 19:30:39
  • 安装ArcGIS提示localhost是无效的主机名解决方法 热门推荐

    安装ArcGIS提示localhost是无效的主机名解决方法 热门推荐

    打开注册表编辑器(开始->运行或win+R输入regedit) 将HKEY_LOCAL_MACHINE\SOFTEARE\ESRI\License10.1中LINESE_SERVER的值改为@localhost

    2024-01-30 19:30:31
  • 用线性代数求解乘法逆元 手算逆元

    用线性代数求解乘法逆元 手算逆元

    2024-01-30 19:30:04
  • 泛化、实现、依赖和关联的区别,组合是强关系

    泛化、实现、依赖和关联的区别,组合是强关系

    泛化、实现、依赖和关联的区别传统应用程序设计中所说的依赖一般指“类之间的关系”,那先让我们复习一下类之间的关系:a、实现表示类对接口的实现。UML图中实现使用一条带有空心三角箭头的虚线指向接口,如下:b、泛化表示类与类之间的继承关系、接口与接口之间的继承关系。UML图中实现使用一条带有空心三角箭头的实线指向基类,如下:c、依赖表现为函数中的参数(us

    2024-01-30 19:29:56