1 形式参数
- 基本类型:形参的改变不影响实际参数
- 引用类型:
类:需要的是该类的具体对象
抽象类:需要的是该抽象类的具体子类对象
接口:需要的是该接口的具体实现类对象
- 类
public class Student{
public void study(){
System.out.println("向钱看,向厚赚。");
}
}
public class StudentDemo{
public void method(Student s){//Student s = new Student()
s.study();
}
}
public class Demo{
public static void main(String[] args){
//我要使用Student中的study()方法
Student s = new Student();
s.study();
System.out.println("-----------------------");
//我要使用StudentDemo类中的method()方法
//StudentDemo sd = new StudentDemo();
//Student ss = new Student();
//sd.method(ss);
//sd.method(new Student());
new StudentDemo().method(new Student());
System.out.println("-----------------------");
}
}
- 抽象类多态
public abstract class Person{
public abstract void study();
}
public class PersonDemo{
public void method(Person p){//Person p = new Stu()
p.study();
}
}
public class Stu extends Person{
public void study(){
System.out.println("向钱看,向厚赚。买房,买车,娶媳妇。");
}
}
public class Demo{
public static void main(String[] args){
//我要使用PersonDemo类中的method()方法
PersonDemo pd = new PersonDemo();
Person p = new Stu();//抽象类多态
//目前这个方法调用不了,因为抽象类无法实例化
//抽象类可以依赖具体的子类实现实例化
pd.method(p);
}
}
- 接口多态
public interface Inter{
public abstract void hobby();
}
public class InterDemo{
public void method(Inter i){ // Inter i = new Stu();
i.hobby();
}
}
public class Stu implements Inter{
public void hobby(){
System.out.println("向钱看,向厚赚");
}
}
public class Demo{
public static void main(String[] args){
// 使用InterDemo类中的method()方法
InterDemo id = new InterDemo();
Inter i = new Stu(); // 接口多态
id.method(i);
}
}
2 返回值
类:返回该类的具体对象
抽象类:返回该抽象类的具体子类对象
接口:返回该接口的具体实现类对象
- 类
public class Stu{
public void study(){
System.out.println("向钱看,向厚赚");
}
}
public class StuDemo{
public Stu get(){
// Stu s = new Stu();
// return s;
return new Stu();
}
}
public class Demo{
public static void main(String[] args){
// 使用Stu类中的study方法
// 要求不能直接创建Stu对象
// 使用StuDemo获取一个Stu对象
StuDemo sd = new StuDemo();
Stu s = sd.get();
s.study();
}
}
- 抽象类
public abstract class Person{
public abstract void study();
}
public class PersonDemo{
public Person get(){
// Person p = new Tea();
// return p;
return new Tea();
}
}
public class Tea extends Person{
public void study(){
System.out.println("老师爱学习");
}
}
public class Demo1{
public static void main(String[] args){
PersonDemo pd = new PersonDemo();
Person p = pd.get(); // new Tea();
// 使用Person中的study方法
// 使用PersonDemo中的get方法获取一个person对象
p.study();
}
}
- 接口
public interface Inter{
public abstract void lover();
}
public class InterDemo{
public Inter get(){
// Inter i = new Teacher();
// return i;
return new Teacher();
}
}
public class Teacher implements Inter{
public void lover(){
System.out.println("爱车,爱钱,爱美女。。。");
}
}
public class Demo2{
public static void main(String[] args){
InterDemo id = new InterDemo();
Inter i = id.get();
i.lover();
}
}