类名作为形式参数
形式参数
- 基本类型(int)
(太简单,今天我们不讲) - 引用类型
类:(匿名对象的时候已经讲过了)
抽象类:需要的是该抽象类的子类对象
接口:
返回值类型
- 基本类型
- 引用类型
package mianxiangduixiang04;
public class student {
public void show() {
System.out.println("good good study,day day up up");
}
}
package mianxiangduixiang04;
public class studentdemo {
public void method(student s) {
System.out.println("good good good study,day day day up up");
}
}
package mianxiangduixiang04;
public class studenttest {
public static void main(String[] args) {
//测试的是student类中的show方法
student s = new student();
s.show();
//测试studentdemo类中的method方法
studentdemo sd = new studentdemo();
sd.method(s);
//匿名对象
new studentdemo().method(new student());
}
}
结果为:
good good study,day day up up
good good good study,day day day up up
good good good study,day day day up up
抽象类名作为形式参数
- 需要的是该抽象类的子类对象
package mianxiangduixiang04;
abstract class person {
public abstract void study();
}
package mianxiangduixiang04;
public class persondemo {
public void method(person p) {
//p;p = new student1; person p = new student(); 多态
p.study();
}
}
package mianxiangduixiang04;
public class student2 extends person{//定义一个具体的学生类
public void study() {
System.out.println("good good study,day day up up");
}
}
package mianxiangduixiang04;
public class persontest {
public static void main(String[] args) {
//需求:我要使用persondemo类中的method方法
persondemo pd = new persondemo();
person p = new student2();
pd.method(p);
}
}
结果为:
good good study,day day up up
接口名作为形式参数
- 需要的是该接口类的实现对象
package mianxiangduixiang04;
//定义一个爱好的接口
interface love{
public abstract void love();
}
public class lovedemo {
public void method(love l) {
l.love();
}
}
package mianxiangduixiang04;
//定义具体类实现接口
public class teacher implements love {
public void love() {
System.out.println("老师爱学生");
}
}
package mianxiangduixiang04;
//需求:我要测试lovedemo类中的method方法
public class lovetest {
public static void main(String[] args) {
lovedemo ld = new lovedemo();
love l= new teacher();
ld.method(l);
}
}
结果为:
老师爱学生
类名作为返回值类型
返回值类型:
A 基本类型(int)
(太简单,不讲解)
B 引用类型(类、接口、抽象类)
- 类:返回的是该类的对象
package mianxiangduixiang04;
public class student3 {
public void study() {
System.out.println("good good good study,day day up");
}
}
package mianxiangduixiang04;
public class studentdemo3 {
public student3 getstudent() {
//student s = new student();
//student ss = s;
//student s = new student();
//return s;
return new student3();
}
//返回了一个student类型,这就相当于返回了一个student类的对象,就相当于 new student 了
}
package mianxiangduixiang04;
public class student3test {
public static void main(String[] args) {
//需求:我要使用student类中的study方法
//一般我们可以直接创建student的对象
//但是,这一次的要求是:不要直接创建student的对象
//要使用studentdemo帮你创造对象
studentdemo3 sd = new studentdemo3();
student3 s = sd.getstudent();
//new student();student s = new student();
s.study();
}
}
结果为:
good good good study,day day up
抽象类作为返回值类型
- 该抽象类返回的的是该抽象类的子类对象
package mianxiangduixiang04;
abstract class person2 {
public abstract void study();
}
package mianxiangduixiang04;
public class persondemo2 {
public person2 getperson2() {
//person p = new person();
//return p;
return new student4();
}
}
package mianxiangduixiang04;
public class student4 extends person2{
public void study() {
System.out.println("学生爱学习");
}
}
package mianxiangduixiang04;
public class persontest2 {
public static void main(String[] args) {
//需求:我要测试person2类中的study方法
persondemo2 pd = new persondemo2();
person2 p = new student4();
p.study();
}
}
结果为:
学生爱学习
接口作为返回值类型
- 接口返回的是该接口的实现类对象
package mianxiangduixiang04;
public interface love{
public abstract void love();
}
public class lovedemo2 {
public love getlove() {
//love l = new teacher();
//return l;
return new teacher();
}
}
package mianxiangduixiang04;
public class teacher2 implements love {
public void love() {
System.out.println("老师爱打羽毛球");
}
}
package mianxiangduixiang04;
public class lovedemotest {
public static void main(String[] args) {
lovedemo2 ld = new lovedemo2();
love l = ld.getlove();
l.love();
}
}
网友评论