Java学习之道-1
一、形参与返回值
平时在进行代码编写的时候大多都是以变量作为形参或者以某种数据类型比如int、String或者Boolean等等作为返回值,本次主要介绍以下三种作为形参与返回值的情况
1、类名作为形参与返回值
类名,顾名思义是定义的class类,然后对应的class类称为另外一个class类的形参或者是返回值。
这种情况比较简单,不需要额外操作,直接调用即可,代码如下
Cat
package Inside_Class.Nomal_class;
public class Cat {
public void show() {
System.out.println("猫在跳舞");
}
}
Cat_operator
package Inside_Class.Nomal_class;
public class Cat_operator {
//作为参数
public void Use_Cat(Cat cat) {
cat.show();
}
//作为返回值
public Cat Use_Cat() {
Cat cat = new Cat();
return cat;
}
}
TestDemo
package Inside_Class.Nomal_class;
public class TestDemo {
public static void main(String[] args) {
Cat_operator c = new Cat_operator();
Cat cat1 = new Cat();
c.Use_Cat(cat1);
System.out.println("-----------");
Cat cat2 = new Cat();
Cat_operator cc = new Cat_operator();
Cat ca = cc.Use_Cat();
ca.show();
}
}
在对应形参与返回值中,用了方法重载的思想:
方法重载与返回值和形参无关,只要方法名相同。
2、抽象类作为形参与返回值
当抽象类作为形参与返回值时需要注意,抽象类!抽象类!抽象类!
他是没有构造方法的!所以没办法实例化对象,那如何作为形参与返回值呢?
有办法!这时候就得用到学过的多态的方法进行操作了,代码如下:
Animal
package Inside_Class.Abstract_class;
//抽象类
public abstract class Animal {
public abstract void eat();
}
AnimalOperator
package Inside_Class.Abstract_class;
//操作类
public class {
//作为参数
public void eat(Animal animal){
animal.eat();
}
//作为返回值
public Animal eat(){
Animal animal = new Cat();
return animal;
}
}
Cat
package Inside_Class.Abstract_class;
//实例化对象,用猫继承
public class Cat extends Animal{
@Override
public void eat() {
System.out.println("猫吃鱼");
}
}
TestDemo2
package Inside_Class.Abstract_class;
//测试类
public class TestDemo2 {
public static void main(String[] args) {
Animal animal = new Cat();
AnimalOperator animalOperator = new AnimalOperator();
animalOperator.eat(animal);
System.out.println("--------------");
AnimalOperator animalOperator1 = new AnimalOperator();
Animal a = animalOperator1.eat();
a.eat();
}
}
在了解了抽象类方法作为形参与返回值之后相比较接口类就比较简单了
3、接口类作为形参与返回值
对于接口类对象作为形参与返回值跟抽象类一样,没有构造方法,没办法单独创建对象,所以一样是需要采用多态的方法来实例化接口类对象
Jump
package Inside_Class.Inter_class;
//接口类
public interface Jump {
public abstract void Jump();
}
JumpOperator
package Inside_Class.Inter_class;
public class JumpOperator {
//作为参数
public void UseJump(Jump j){
j.Jump();
}
//作为返回值
public Jump UseJump(){
Jump ju = new Cat();
return ju;
}
}
Cat
package Inside_Class.Inter_class;
//接口实现类
public class Cat implements Jump{
@Override
public void Jump() {
System.out.println("猫能跳高了");
}
}
TestDemo3
package Inside_Class.Inter_class;
public class TestDemo3 {
public static void main(String[] args) {
JumpOperator j = new JumpOperator();
Jump jump =new Cat();
j.UseJump(jump);
System.out.println("-------------");
Jump jump1 = j.UseJump();
jump1.Jump();
}
}
总结
整体而言,对于不同类型作为形参与返回值,其实尊重对应的约定,比如:抽象类与接口类,要通过继承或者实现的方式实例化对象,然后通过多态的方式进行操作。