学习时间
2020-12-3
学习内容
汇总
形式参数是基本类型要的是数据
形式参数是类名要的是这个类的对象
形式参数是抽象类名要的是本类的子类的一个对象
形式参数是接口名要的是实现该接口的类的一个对象
返回值类型是基本类型返回的是数据
返回值类型是类名返回的是这个类的对象
返回值类型是抽象类名返回的是本类的子类的一个对象
返回值类型是接口名返回的是实现该接口的类的一个对象
演示
1、如果一个方法形参类型为 类 或者返回值类型为 类,则传递一个该类的对象。例:
public class Test {
public static void main(String[] args) {
Student student = new Student();
student.show(student,20); //传入参数 Student类型的对象student
System.out.println(student.num); //20
student = student.show2(40); //方法返回值为在方法内new的对象的地址,使对象student指向新new的Student类对象的地址,且最终num赋值为40
System.out.println(student.num); //40
}
}
class Student{
int num = 10;
public void show(Student student,int num){ // 形参为 类 类型的方法
this.num = num;
}
public Student show2(int num){ // 返回值为 类 类型的方法
Student student = new Student();
student.num = num;
return student;
}
}
2、如果一个方法形参类型为 抽象类 或者返回值类型为 抽象类,则传递一个该类的子类对象。例:
public class Test2 {
public static void main(String[] args) {
Husky husky = new Husky();
husky.show(husky,40); //传入抽象类的子类对象
System.out.println(husky.num); //40
Dog dog = new Husky();
dog = dog.show2(); //将方法返回的父类指向子类对象dog的地址赋给dog
System.out.println(dog.num); //多态访问成员变量,访问的是父类空间的成员变量。50
}
}
abstract class Dog{
int num = 20;
public abstract void show(Dog dog,int num);
public abstract Dog show2();
}
class Husky extends Dog {
int num = 30;
@Override
public void show(Dog dog,int num) {
this.num = num;
}
@Override
public Dog show2() {
Dog dog = new Husky(); // 改变的是抽象父类的空间num值,多态
dog.num = 50;
return dog;
}
}
3、如果一个方法形参类型为 接口类型 或者返回值类型为 接口类型,则传递一个该接口的子类对象。例:
public class Test3 {
public static void main(String[] args) {
Husky husky = new Husky();
husky.show(husky,40); //传入接口的子类对象
System.out.println(husky.num); //40
Dog dog = new Husky();
dog = dog.show2();
System.out.println(dog.num); //多态访问成员变量,访问的是父类空间的成员变量。20
}
interface Dog{
public static final int num = 20;
public abstract void show(Dog dog,int num);
public abstract Dog show2();
}
static class Husky implements Dog {
int num = 30;
@Override
public void show(Dog dog,int num) {
this.num = num;
}
@Override
public Dog show2() {
Dog dog = new Husky(); // 接口内的成员变量为常量。不能修改
return dog;
}
}
}