基本类型和引用类型作为形式参数
基本类型:
例如:
class Demo {
public int sum (int a,int b) {
return a + b;
}
}
引用类型:
类:
例如:
需要的是抽象类的子类对象,因为抽象类不能实例化,必须用多态方式实例化。
案例:
需要的是实现类对象,因为抽象类不能实例化,必须用多态方式实例化。
案例:
基本类型:
例如:
class Demo {
public int sum (int a,int b) {
return a + b;
}
}
引用类型:
类:
例如:
class Student {
//学生类中的一个方法
public void show() {
System.out.println("好好学习");
}
}
class StudentDemo {
//这里的Student s是引用类型的形式参数
//如果一个方法的形式参数是一个类类型(引用类型)
//这里其实需要的是该类的对象
public void method(Student s) {
//调用学生类的方法
s.show();
}
}
抽象类:
需要的是抽象类的子类对象,因为抽象类不能实例化,必须用多态方式实例化。
案例:
Person抽象类:
package com.haust.day10.demo2;
public abstract class Person {
public abstract void study();
}
Student类继承Person抽象类:
package com.haust.day10.demo2;
public class Student extends Person {
public void study() {
System.out.println("好好学习!!");
}
}
PersonDemo类:
package com.haust.day10.demo2;
public class PersonDemo {
public void method(Person p){
p.study();
}
}
测试类:
package com.haust.day10.demo2;
public class Main {
/**
* @param args
*/
public static void main(String[] args) {
//需求:使用PersonDome中的method方法
//目前是没有办法使用PersonDome中的method方法的
//因为抽象类不能被实例化,所以只能先定义一个具体类
PersonDemo pd = new PersonDemo();
Person p = new Student();//使用父类引用,间接使用抽象类对象
pd.method(p);//把抽象类Person对象p引用作为参数传递。
}
}
输出:
好好学习!
接口:需要的是实现类对象,因为抽象类不能实例化,必须用多态方式实例化。
案例:
Love接口:
package com.haust.day10.demo3;
public interface Love {
public abstract void love();
}
LoveDemo类:
package com.haust.day10.demo3;
public class LoveDemo {
public void method(Love l){
l.love();
}
}
Student类:
package com.haust.day10.demo3;
public class Student implements Love {
public void love() {
System.out.println("学生爱学习!");
}
}
测试类:
package com.haust.day10.demo3;
public class Main {
/**
* @param args
*/
public static void main(String[] args) {
//需求:测试LoveDemo中的method方法
//首先由于Love是接口,不能实例化,所以需要借助实现类通过多态间接"实例化"
//首先创建具体类对象
LoveDemo ld = new LoveDemo();
//实现多态
Love l = new Student();
//调用方法传参:
ld.method(l);
}
}
输出:
学生爱学习!