形式参数和返回值的问题

(1).形式参数:

    A.类名:需要该类的对象。

    B.抽象类名:需要该类的子类对象。

    C.接口名:需要该接口的实现类对象。

A.类名作为形式参数

class Student {
public void study(){
System.out.println("Study!");
}
} class StudentDemo{
public void method(Student s){ //ss = new Student(); Student s = new Student();
s.study();
}
}
class StudentTest{
public static void main(String[] args){
Student s = new Student(); // 利用Student类进行study函数的使用。
s.study();
System.out.println("----------------");
StudentDemo sd = new StudentDemo();
Student ss = new Student(); //利用StudentDemo类进行输出study。
sd.method(ss);
System.out.println("----------------");
new StudentDemo().method (new Student()); // 匿名对象用法
}
}

B.抽象名作为形式参数

abstract class Person{
public abstract void study();
} class PersonDemo{
public void method(Person p) {
p.study();
}
} class Stu extends Person{
public void study() {
System.out.println("study!");
}
} class Student{
public static void main(String[] args) {
Person pp = new Stu(); // 利用Stu类调用study函数进行输出。
pp.study();
System.out.println("-----------");
PersonDemo pd = new PersonDemo();//利用PersonDemo类进行调用函数进行输出。
Person p = new Stu();
pd.method(p);
}
}

C.接口作为形式参数

interface Love{
public abstract void love();
} class LoveDemo{
public void method(Love l) {
l.love();
}
} class LoveTest implements Love{
public void love() {
System.out.println("Love!");
}
} class Demo{
public static void main(String[] args) {
LoveDemo ld = new LoveDemo(); // 利用LoveDemo类进行调用输出。
Love l = new LoveTest();
ld.method(l);
System.out.println("-------------");
Love ll = new LoveTest(); // 利用Love类进行调用输出。
ll.love();
}
}

(1).返回值类型:

    A.类名:返回的是该类的对象。

    B.抽象类名:返回的是该类的子类对象。

    C.接口名:返回的是该接口的实现类的对象。

A.类名作为返回值

class Stu{
public void study() {
System.out.println("Study!");
}
} class StuDemo{
public Stu getStu() {
//Stu s = new Stu(); // 这里有两种形式表达,选取自己较能理解的。
//return s;
return new Stu();
}
} class StudentTset {
public static void main(String[] args) {
StuDemo sd = new StuDemo(); // 利用StuDemo类来进行调用函数输出。
Stu s = sd.getStu();
s.study();
}
}

B.抽象类名作为返回值

abstract class Person{
public abstract void study();
} class PersonDemo{
public Person getPerson() {
//Person p = new Stu();
//return p;
return new Stu();
}
} class Stu extends Person{
public void study() {
System.out.println("Study!");
}
}
class Student {
public static void main(String[] args) {
PersonDemo pd = new PersonDemo(); // 利用PersonDemo类来进行调用函数输出。
Person p = pd.getPerson();
p.study();
System.out.println("------------");
Person pp = new Stu(); // 利用多态进行创建对象并输出。
pp.study();
System.out.println("------------");
Stu s = new Stu(); // 利用Stu类来进行函数调用并输出。
s.study();
}
}

C.接口作为返回值

interface Jump{
public abstract void jump();
} class JumpDemo{
public Jump getJump() {
//Jump j = new Dog();
//return j;
return new Dog();
}
} class Dog implements Jump{
public void jump() {
System.out.println("can jump!");
}
}
class Student {
public static void main(String[] args) {
JumpDemo jd = new JumpDemo(); // 利用JumpDemo类来进行调用函数输出。
Jump j = jd.getJump();
j.jump();
}
}

上面的代码虽然有一些有比较简单的输出形式,但是没有用到专门所创建的形式参数和返回值的类。我们之所以不用简单的形式就是要把这个 形式参数和返回值的问题 给弄清楚。

Java形式参数和返回值的问题的更多相关文章

  1. 10-02 Java 形式参数和返回值的问题深入研究,链式编程

    形式参数和返回值的问题: 1:形式参数和返回值的问题(理解) (1)形式参数: 类名:需要该类的对象 抽象类名:需要该类的子类对象 接口名:需要该接口的实现类对象 (2)返回值类型: 类名:返回的是该 ...

  2. java基础之抽象类与接口的形式参数和返回值

    抽象类与接口形式参数和返回值问题 1.形参问题 /* 1.形式参数: 基本类型(太简单,不是我今天要讲解的) 引用类型 (1)类名:(匿名对象的时候其实我们已经讲过了) 需要的是该类的对象 (2)抽象 ...

  3. 在Java 线程中返回值的用法

    http://icgemu.iteye.com/blog/467848 在Java 线程中返回值的用法 博客分类: Java Javathread  有时在执行线程中需要在线程中返回一个值:常规中我们 ...

  4. java 代码执行cmd 返回值异常 (关于JAVA Project.waitfor()返回值是1)

    关于JAVA Project.waitfor()返回值是1   0条评论 Project.waitfor()返回值是1,找了很久从网上没有发现关于1的说明. 这时对源代码调试了一下,发现Project ...

  5. Java多线程带返回值的Callable接口

    Java多线程带返回值的Callable接口 在面试的时候,有时候是不是会遇到面试会问你,Java中实现多线程的方式有几种?你知道吗?你知道Java中有可以返回值的线程吗?在具体的用法你知道吗?如果两 ...

  6. LY.JAVA面向对象编程.形式参数和返回值

    2018-07-09 13:29:16 运动员和教练案例 /* 教练和运动员案例(学生分析然后讲解) 乒乓球运动员和篮球运动员. 乒乓球教练和篮球教练. 为了出国交流,跟乒乓球相关的人员都需要学习英语 ...

  7. 《java入门第一季》之面向对象(形式参数和返回值问题的深入研究3)

    /*     形式参数:         引用类型 接口:需要的是该接口的实现类对象 这个时候就没什么了,和抽象类的解释差不多. */ interface Love { public abstract ...

  8. 为什么Java不能以返回值区分重载方法?

    读者可能会想:"在区分重载方法的时候,为什么只能以类名和方法的形参列表作为标准呢?能否考虑用方法的返回值来区分呢?" 比如下面两个方法,虽然他们有相同的名字和形式参数,但却很容易区 ...

  9. 谁说java里面有返回值的方法必须要有返回值,不然会报错????

    慢慢的总是发现以前的学得时候有些老师讲的不对的地方! 所以还是尽量别把一些东西说的那么绝对,不然总是很容易误导别人,特别是一些你自己根本就没有试过的东西,然后又斩钉截铁的告诉别人,这样不行,肯定不行什 ...

随机推荐

  1. uoj#274. 【清华集训2016】温暖会指引我们前行(LCT)

    传送门 不难发现肯定是在温度的最大生成树上走是最优的 于是用\(LCT\)维护最大生成树,每一次加边时如果已经连通,就判断一下路径上的最小温度是否小于当前温度,是的话就断掉那条边,加入新边 //min ...

  2. javaScript中for-in语句

    for-in语句是一种精准的迭代语句,用来枚举对象的属性 实例: <!DOCTYPE html><html><head> <title>For-In S ...

  3. vijos次小生成树

    xiaomengxian的哥哥是一个游戏迷,他喜欢研究各种游戏.这天,xiaomengxian到他家玩,他便拿出了自己最近正在研究的一个游戏给xiaomengxian看.这个游戏是这样的:一个国家有N ...

  4. go系列(2)- go框架beego以及命令bee的使用

    上篇写了go的安装和GOPATH的配置,linux下go的安装 ,现在就看看如何用框架. 1.进入GOPATH的目录 cd /data/work/go 2.下载beego,通过go get go ge ...

  5. Mysql 开启 Slow 慢查询

    1:登录数据库查看是否已经开启了Slow慢查询: mysql> show variables like 'slow_query%'; 2:开启Mysql slow日志: 默认情况下slow_qu ...

  6. Gym - 101810D ACM International Collegiate Programming Contest (2018)

    bryce1010模板 http://codeforces.com/gym/101810 #include <bits/stdc++.h> using namespace std; #de ...

  7. 简单了解junit的使用

    普通使用: 在没有用测试框架之前,我们要用一个main方法来跑代码,而有了像junit这样的测试框架后,就可以不用次次写个main方法了. 直接上代码,注释里有说明: package com.stuP ...

  8. Linux 批量杀进程的命令

    使用awk批量杀进程的命令: ps -ef | grep firefox | grep -v grep | awk '{print "kill -9 "$2}'|sh #列出了当前 ...

  9. MYSQL5.7.11安装问题

    今天下午在笔记本上安装MySQL软件.一开始下载的是最新版5.7.20-winx64.到了安装环节,各种报错,先是缺少什么DLL120,好吧,找到资源补丁下载,放到系统文件夹.以为OK了.再尝试,这次 ...

  10. I/O————数据流

    如何将一个long类型的数据写入文件中? 转字符串 → 通过 getbytes() 写进去,费劲,而且在此过程中 long 类型的数需要不断地转换. 现在,Java 中的数据流能够很好的解决这个问题( ...