java中类、抽象类、接口作为形参和返回值

一,类名作为形参和返回值

方法的形参是类名,其实需要的是该类的对象
方法的返回值是类名,其实返回的是该类的对象
 

二,抽象类名作为形参和返回值

方法的形参是抽象类名,其实需要的是抽象类的子类对象
方法的返回值是抽象类名,其实返回的是抽象类的子类对象

三,接口名作为形参和返回值

方法的形参是接口名,其实需要的是接口的实现类对象
方法的返回值是接口名,其实返回的是接口的实现类对象

四,案例

类名作为形参和返回值之前的学生信息管理案例有所涉及,不再练习

PlayGame接口

public interface PlayGame {
    String name="小米";
    void playgame();
    void show(PlayGame p);
}

Phone抽象类

public abstract class Phone {
    public String name;
    public abstract void call();
    public abstract void send();
    public abstract void show(Phone p);

}

elderphone,cellphone类

public class ElderPhone extends Phone{
    @Override
    public void call(){
        System.out.println("老年机可以打电话");
    }
    @Override
    public void send(){
        System.out.println("老年机可以发信息");
    }
    public Phone newelderphone(){
        Phone p=new ElderPhone();
        return p;
    }
    @Override
    public void show(Phone p){
        System.out.println(p.name+"这是一个老年机");
    }
}
public class CellPhone extends Phone implements PlayGame{
    @Override
    public void call(){
        System.out.println("智能机可以打电话");
    }
    @Override
    public void send(){
        System.out.println("智能机可以发信息");
    }

    @Override
    public void show(Phone p) {
        System.out.println("智能机");
    }

    @Override
    public void playgame(){
        System.out.println("智能机可以玩游戏");
    }
    public PlayGame newcellphone(){
        PlayGame p=new CellPhone();
        return p;
    }
    @Override
    public void show(PlayGame p){
        System.out.println(p.name+"可以玩游戏");
    }
}

测试类

public class test {
    public static void main(String[] args) {
        System.out.println("--------------------");
        ElderPhone ep=new ElderPhone();
//        返回值是Phone类类型,实际上返回的是Phone的子类对象
        Phone ep1=ep.newelderphone();
        ep1.call();
//        形参是Phone类类型,实际上传的是Phone的子类对象
        Phone ep2=new ElderPhone();
        ep2.name="诺基亚";
//        将name赋值给ep2,可以看出show中传的参数确实是ep2
        ep1.show(ep2);
        System.out.println("--------------------");
        CellPhone cp=new CellPhone();
//        返回值是接口名PlayGame,其实返回的是接口的实现类对象
        PlayGame cp1=cp.newcellphone();
        cp1.playgame();
//        形参是接口名PlayGame,其实需要传入的是接口的实现类对象
        PlayGame cp2=new CellPhone();
        cp1.show(cp2);
    }
}

测试结果

java中类、抽象类、接口作为形参和返回值_第1张图片

你可能感兴趣的:(java,开发语言)