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

形式参数和返回值的问题:

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

        这种用法:其实在方法1()调用完毕后,应该一个对象;
                  方法2()调用完毕后,应该返回一个对象。
                  方法n()调用完毕后,可能是对象,也可以不是对象。

类名作为形式参数

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

类名作为返回值类

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

抽象类作为返回值类型

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

接口作为返回值类型

/*
    返回值类型
        基本类型:(基本类型太简单,我不准备讲解)
        引用类型:
            类:返回的是该类的对象
            抽象类:返回的是该抽象类的子类对象
            接口:返回的是该接口的实现类的对象
*/
//定义一个爱好的接口
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();
    }
}
				
时间: 2024-10-17 22:31:04

10-02 Java 形式参数和返回值的问题深入研究,链式编程的相关文章

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

/* 形式参数: 引用类型 接口:需要的是该接口的实现类对象 这个时候就没什么了,和抽象类的解释差不多. */ interface Love { public abstract void love(); } class LoveDemo { public void method(Love l) { l.love();//如果看到一个方法内的引用类型是接口类型,这里传递的应该是该接口的实现类类对象. } } //定义具体类实现接口,该接口的实现类 class Teacher implements

在Java 线程中返回值的用法

http://icgemu.iteye.com/blog/467848 在Java 线程中返回值的用法 博客分类: Java Javathread 有时在执行线程中需要在线程中返回一个值:常规中我们会用Runnable接口和Thread类设置一个变量:在run()中改变变量的值,再用一个get方法取得该值,但是run何时完成是未知的:我们需要一定的机制来保证. 在在Java se5有个Callable接口:我们可以用该接口来完成该功能: 代码如: Java代码   package com.thr

Android JNI之调用JAVA方法的返回值签名

从http://blog.csdn.net/lonelyroamer/article/details/7932787截取的 如何签名: 下面看看Sign签名如何写,来表示要取得的属性或方法的类型. 1.普通类型签名 2.引用类型签名 object     L开头,然后以/ 分隔包的完整类型,后面再加:   比如说String    签名就是   Ljava/lang/String; Array      以[ 开头,在加上数组元素类型的签名            比如int[]   签名就是[I

Java_类与对象08_形式参数和返回值的问题

1.     形式参数: 类名:需要该类的对象 抽象类名:需要该类的子类对象 接口名:需要该接口的实现类对象 案例一: 案例二: 案例三: 2.     返回值类型: 类名:返回的是该类的对象 抽象类名:返回的是该类的子类对象 接口名:返回的是该接口的实现类的对象 案例一: 案例二: 案例三: 3.     链式编程 对象.方法1().方法2().......方法n(); 这种用法:其实在方法1()调用完毕后,应该一个对象: 方法2()调用完毕后,应该返回一个对象. 方法n()调用完毕后,可能是

java中的链式编程

听到链式编程听陌生的,但是写出来就感觉其实很熟悉 1 package test; 2 3 public class Test { 4 String name; 5 String phone; 6 String mail; 7 String sex; 8 public Test setName(String name) { 9 this.name = name; 10 return this; 11 } 12 public Test setPhone(String phone) { 13 this

Java链式编程接口

在android开发中显示一个AlertDialog时,常采用下列的写法: new AlertDialog.Builder(getApplicationContext()) .setTitle("Dialog") .setMessage("Link program") .setPositiveButton("OK", new OnClickListener() { @Override public void onClick(DialogInter

JavaSE8基础 链式编程 调用方法返回对象再调方法 简单示例

os :windows7 x64    jdk:jdk-8u131-windows-x64    ide:Eclipse Oxygen Release (4.7.0)        代码: class Person { public void sayHello() { System.out.println("hello world"); } } class Tools { public static Person getPersonObj() { return new Person()

Java连载27-有返回值的方法注意点

一.方法注意点 (1)方法的调用不一定再main方法中,可以在其他方法中进行调用,只要是程序执行到的位置,都可以去调用其他方法. (2)方法调用的时候,实参和形参要求个数对应相同,数据类型对应相同,方法不同的时候,要求能够进行相应的自动类型转换 (3)当方法的调用和方法在同一个类中的时候,“类名.”是可以省略不写的. (4)建议在一个java文件中只定义一个类为好,不要定义多个类,这里只是举例,不建议模仿 例子: public class d27_{ public static void mai

正确理解Java方法的返回值

首先来看一段代码 我们把这段代码称为代码①,接下来我们再来看另外一段代码 我们把这段代码称为代码②.在代码①当中,定义了一个方法,这个方法声明的返回值类型是double,而实际通过return关键字返回的却是一个int型的值,但并没有引起编译错误.而在代码②当中,情况正好相反,方法声明的返回值类型是int,方法内部的return关键字实际返回了一个double类型的值,在这种情况下,编译器却报出了语法错误.对比一下这两种情况,很多初学Java的小伙伴搞不清:为什么同样是方法声明的返回值类型与实际