形式参数和返回值的问题:
这种<a href="https://www.jb51.cc/tag/yongfa/" target="_blank" class="keywords">用法</a>:其实在<a href="https://www.jb51.cc/tag/fangfa/" target="_blank" class="keywords">方法</a>1()<a href="https://www.jb51.cc/tag/diaoyong/" target="_blank" class="keywords">调用</a>完毕后,应该一个对象;
<a href="https://www.jb51.cc/tag/fangfa/" target="_blank" class="keywords">方法</a>2()<a href="https://www.jb51.cc/tag/diaoyong/" target="_blank" class="keywords">调用</a>完毕后,应该返回一个对象。
<a href="https://www.jb51.cc/tag/fangfa/" target="_blank" class="keywords">方法</a>n()<a href="https://www.jb51.cc/tag/diaoyong/" target="_blank" class="keywords">调用</a>完毕后,可能是对象,也可以不是对象。</span></pre>
类名作为形式参数
<span style="color: #0000ff;">public <span style="color: #0000ff;">void method(<span style="color: #ff0000;">Student s) { <span style="color: #008000;">//<span style="color: #008000;">ss; <span style="color: #ff0000;">ss = new Student(); 需要的是该类的对象
<span style="color: #000000;"> s.study();
}
}
<span style="color: #0000ff;">class<span style="color: #000000;"> StudentTest {
<span style="color: #0000ff;">public <span style="color: #0000ff;">static <span style="color: #0000ff;">void<span style="color: #000000;"> main(String[] args) {
<span style="color: #008000;">//<span style="color: #008000;">需求:我要测试Student类的study()方法
Student s = <span style="color: #0000ff;">new<span style="color: #000000;"> Student();
s.study();
System.out.println("----------------"<span style="color: #000000;">);
</span><span style="color: #008000;">//</span><span style="color: #008000;">需求2:我要测试StudentDemo类中的method()<a href="https://www.jb51.cc/tag/fangfa/" target="_blank" class="keywords">方法</a></span>
StudentDemo sd = <span style="color: #0000ff;">new</span><span style="color: #000000;"> StudentDemo();
<span style="color: #ff0000;">Student ss </span></span><span style="color: #ff0000;">= new</span><span style="color: #000000;"><span style="color: #ff0000;"> Student();</span>
sd.method(<span style="color: #ff0000;">ss</span>);
System.out.println(</span>"----------------"<span style="color: #000000;">);
</span><span style="color: #008000;">//</span><span style="color: #008000;">匿名对象<a href="https://www.jb51.cc/tag/yongfa/" target="_blank" class="keywords">用法</a></span>
<span style="color: #0000ff;">new</span> StudentDemo().method(<span style="color: #0000ff;">new</span><span style="color: #000000;"> Student());
}
}
抽象类名作为形式参数
<span style="color: #0000ff;">public <span style="color: #0000ff;">void method(Person p) {<span style="color: #ff0000;">//p; p = new Student(); Person p = new Student(); //多态
<span style="color: #000000;"> p.study();
}
} <span style="color: #008000;">//<span style="color: #008000;">定义一个具体的学生类
<span style="color: #0000ff;">class Student <span style="color: #0000ff;">extends<span style="color: #000000;"> Person {
<span style="color: #0000ff;">public <span style="color: #0000ff;">void<span style="color: #000000;"> study() {
System.out.println("Good Good Study,Day Day Up"<span style="color: #000000;">);
}
}
<span style="color: #0000ff;">class<span style="color: #000000;"> PersonTest {
<span style="color: #0000ff;">public <span style="color: #0000ff;">static <span style="color: #0000ff;">void<span style="color: #000000;"> main(String[] args) {
<span style="color: #008000;">//<span style="color: #008000;">目前是没有办法的使用的
<span style="color: #008000;">//<span style="color: #008000;">因为抽象类没有对应的具体类
<span style="color: #008000;">//<span style="color: #008000;">那么,我们就应该先定义一个具体类
<span style="color: #008000;">//<span style="color: #008000;">需求:我要使用PersonDemo类中的method()方法
PersonDemo pd = <span style="color: #0000ff;">new<span style="color: #000000;"> PersonDemo();
<span style="color: #ff0000;">Person p <span style="color: #ff0000;">= new<span style="color: #000000;"><span style="color: #ff0000;"> Student();
pd.method(<span style="color: #ff0000;">p);
}
}
接口名作为形式参数
<span style="color: #0000ff;">public <span style="color: #0000ff;">void method(<span style="color: #ff0000;">Love l) { <span style="color: #008000;">//<span style="color: #008000;">l; <span style="color: #ff0000;">l = new Teacher(); Love l = new Teacher(); 多态
<span style="color: #000000;"> l.love();
}
} <span style="color: #ff0000;">//定义具体类实现接口
<span style="color: #0000ff;">class Teacher <span style="color: #0000ff;">implements<span style="color: #000000;"> Love {
<span style="color: #0000ff;">public <span style="color: #0000ff;">void<span style="color: #000000;"> love() {
System.out.println("老师爱学生,爱Java,爱林青霞"<span style="color: #000000;">);
}
}
<span style="color: #0000ff;">class<span style="color: #000000;"> TeacherTest {
<span style="color: #0000ff;">public <span style="color: #0000ff;">static <span style="color: #0000ff;">void<span style="color: #000000;"> main(String[] args) {
<span style="color: #008000;">//<span style="color: #008000;">需求:我要测试LoveDemo类中的love()方法
LoveDemo ld = <span style="color: #0000ff;">new<span style="color: #000000;"> LoveDemo();
<span style="color: #ff0000;"> Love l <span style="color: #ff0000;">= new<span style="color: #000000;"><span style="color: #ff0000;"> Teacher();
ld.method(l);
}
}
类名作为返回值类型
<span style="color: #0000ff;">public<span style="color: #000000;"><span style="color: #ff0000;"> Student getStudent() {
<span style="color: #008000;">//<span style="color: #008000;">Student s = new Student();
<span style="color: #008000;">//<span style="color: #008000;">Student ss = s;
</span><span style="color: #008000;">//</span><span style="color: #008000;">Student s = new Student();
</span><span style="color: #008000;">//</span><span style="color: #008000;">return s;</span>
<span style="color: #ff0000;"> return new</span><span style="color: #000000;"><span style="color: #ff0000;"> Student();</span>
}
}
<span style="color: #0000ff;">class<span style="color: #000000;"> StudentTest2 {
<span style="color: #0000ff;">public <span style="color: #0000ff;">static <span style="color: #0000ff;">void<span style="color: #000000;"> main(String[] args) {
<span style="color: #008000;">//<span style="color: #008000;">需求:我要使用Student类中的study()方法
<span style="color: #008000;">//<span style="color: #008000;">但是,这一次我的要求是,不要直接创建Student的对象
<span style="color: #ff0000;">//让你使用StudentDemo帮你创建对象
StudentDemo sd = <span style="color: #0000ff;">new<span style="color: #000000;"> StudentDemo();
Student s = sd.getStudent(); <span style="color: #ff0000;">//new Student(); Student s = new Student();
<span style="color: #000000;"> s.study();
}
}
抽象类作为返回值类型
<span style="color: #0000ff;">public<span style="color: #000000;"><span style="color: #ff0000;"> Person getPerson() {
<span style="color: #008000;">//<span style="color: #008000;">Person p = new Student();
<span style="color: #008000;">//<span style="color: #008000;">return p;
<span style="color: #ff0000;">return new</span><span style="color: #000000;"><span style="color: #ff0000;"> Student();</span>
}
}
<span style="color: #0000ff;">class Student <span style="color: #0000ff;">extends<span style="color: #000000;"> Person {
<span style="color: #0000ff;">public <span style="color: #0000ff;">void<span style="color: #000000;"> study() {
System.out.println("Good Good Study,Day Day Up"<span style="color: #000000;">);
}
}
<span style="color: #0000ff;">class<span style="color: #000000;"> PersonTest2 {
<span style="color: #0000ff;">public <span style="color: #0000ff;">static <span style="color: #0000ff;">void<span style="color: #000000;"> main(String[] args) {
<span style="color: #008000;">//<span style="color: #008000;">需求:我要测试Person类中的study()方法
PersonDemo pd = <span style="color: #0000ff;">new<span style="color: #000000;"> PersonDemo();
Person p = pd.getPerson(); <span style="color: #ff0000;">//new Student(); Person p = new Student(); 多态
<span style="color: #000000;"> p.study();
}
}
接口作为返回值类型
<span style="color: #0000ff;">public<span style="color: #000000;"> Love getLove() {
<span style="color: #008000;">//<span style="color: #008000;">Love l = new Teacher();
<span style="color: #008000;">//<span style="color: #008000;">return l;
<span style="color: #0000ff;">return</span> <span style="color: #0000ff;">new</span><span style="color: #000000;"> Teacher();
}
}
<span style="color: #008000;">//<span style="color: #008000;">定义具体类实现接口<span style="color: #0000ff;">class Teacher <span style="color: #0000ff;">implements<span style="color: #000000;"> Love {
<span style="color: #0000ff;">public <span style="color: #0000ff;">void<span style="color: #000000;"> love() {
System.out.println("老师爱学生,爱林青霞"<span style="color: #000000;">);
}
}
<span style="color: #0000ff;">class<span style="color: #000000;"> TeacherTest2 {
<span style="color: #0000ff;">public <span style="color: #0000ff;">static <span style="color: #0000ff;">void<span style="color: #000000;"> main(String[] args) {
<span style="color: #008000;">//<span style="color: #008000;">如何测试呢?
LoveDemo ld = <span style="color: #0000ff;">new<span style="color: #000000;"> LoveDemo();
Love l = ld.getLove(); <span style="color: #008000;">//<span style="color: #008000;">new Teacher(); Love l = new Teacher(); 多态
<span style="color: #000000;"> l.love();
}
}
链式编程
<span style="color: #0000ff;">public<span style="color: #000000;"> Student getStudent() {
<span style="color: #0000ff;">return <span style="color: #0000ff;">new<span style="color: #000000;"> Student();
}
} <span style="color: #0000ff;">class<span style="color: #000000;"> StudentTest3 {
<span style="color: #0000ff;">public <span style="color: #0000ff;">static <span style="color: #0000ff;">void<span style="color: #000000;"> main(String[] args) {
<span style="color: #008000;">//<span style="color: #008000;">如何调用的呢?
StudentDemo sd = <span style="color: #0000ff;">new<span style="color: #000000;"> StudentDemo();
<span style="color: #008000;">//<span style="color: #008000;">Student s = sd.getStudent();
<span style="color: #008000;">//<span style="color: #008000;">s.study();
</span><span style="color: #008000;">//</span><span style="color: #008000;">大家注意了,这里采用链式编程</span>
<span style="color: #000000;"><span style="color: #ff0000;"> sd.getStudent().study();
}
}