花几千上万学习Java,真没必要!(二十五)

1、类名作为形参和返回值:

创建一个水果类:

package internalclasstest.com;
public class Fruit {  
    private String name;  
    private int weight;  
  
    public Fruit(String name, int weight) {  
        this.name = name;  
        this.weight = weight;  
    }  
  
    public String getName() {  
        return name;  
    }  
  
    public int getWeight() {  
        return weight;  
    }  
  
    @Override  
    public String toString() {  
        return "Fruit{" +  
                "name='" + name + '\'' +  
                ", weight=" + weight +  
                '}';  
    }  
}

测试代码: 

package internalclasstest.com;
public class FruitShop {  
	  
    // 接收Fruit实例作为参数的方法  
    public void displayFruit(Fruit fruit) {  
        System.out.println("Displaying Fruit: " + fruit);  
    }  
    //使用这个类的实例作为方法的形参和返回值
    // 返回Fruit实例的方法  
    public Fruit getFruit(String name, int weight) {  
        // 简单地创建一个新的Fruit实例并返回  
        return new Fruit(name, weight);  
    }  
  
    public static void main(String[] args) {  
        FruitShop shop = new FruitShop();  
  
        // 调用返回Fruit实例的方法  
        Fruit apple = shop.getFruit("Apple", 150);  
          
        // 调用接收Fruit实例作为参数的方法  
        shop.displayFruit(apple);  
  
        // 可以继续创建其他水果并显示  
        Fruit banana = shop.getFruit("Banana", 120);  
        shop.displayFruit(banana);  
    }  
}

运行结果如下:

 

 

2、 抽象类名作为形参和返回值:

创建一个女性类:

package internalclasstest.com;

   //定义一个抽象方类
public abstract class Female {
	// 所有女性都有一个名字
	protected String name;

	// 构造方法
	public Female(String name) {
		this.name = name;
	}

	// 抽象方法,具体子类需要实现
	public abstract void introduce();

	// 也可以包含一些非抽象的方法
	public void greet() {
		System.out.println("Hello, my name is " + name);
	}
}

创建一个 Mother类:

package internalclasstest.com;
//定义Mother类
public class Mother extends Female {  
    public Mother(String name) {  
        super(name);  
    }  
  
    @Override  
    public void introduce() {  
        System.out.println("I am a mother.");  
    }  
}

创建一个Daughter 类:

package internalclasstest.com;
//定义女儿类
public class Daughter extends Female {  
    public Daughter(String name) {  
        super(name);  
    }  
  
    @Override  
    public void introduce() {  
        System.out.println("I am a daughter.");  
    }  
}

测试代码:

package internalclasstest.com;
//编写一个类,包含以Female作为形参和返回值的方法。
public class FemaleOperations {  
	  
    // 方法:接收Female作为参数  
    public void operateOnFemale(Female female) {  
        female.greet();  
        female.introduce();  
    }  
  
    // 方法:返回Female  
    public Female createFemale(String type, String name) {  
        if ("mother".equalsIgnoreCase(type)) {  
            return new Mother(name);  
        } else if ("daughter".equalsIgnoreCase(type)) {  
            return new Daughter(name);  
        }  
        return null; // 如果没有匹配的类型,返回null(或者抛出异常)  
    }  
  
    public static void main(String[] args) {  
        FemaleOperations operations = new FemaleOperations();  
  
        // 创建一个Mother实例并操作  
        Female mother = operations.createFemale("mother", "Jane");  
        operations.operateOnFemale(mother);  
  
        // 创建一个Daughter实例并操作  
        Female daughter = operations.createFemale("daughter", "Emily");  
        operations.operateOnFemale(daughter);  
    }  
}

 运行结果如下:

 

是不是有点难以接受?没关系,女性的世界都是这样的啦!!! 

3、 接口作为形参和返回值:

定义一个衣服接口:

package internalclasstest.com;
//定义一个衣服接口
public interface Clothing {  
    String getName();  
    String getType();  
}

衬衫类实现衣服接口:

package internalclasstest.com;
//Shirt(衬衫)类实现Clothing接口
public class Shirt implements Clothing {  
    private String name;  
    private String type = "Shirt";  
  
    public Shirt(String name) {  
        this.name = name;  
    }  
  
    @Override  
    public String getName() {  
        return name;  
    }  
  
    @Override  
    public String getType() {  
        return type;  
    }  
  
    @Override  
    public String toString() {  
        return "Shirt{" +  
               "name='" + name + '\'' +  
               ", type='" + type + '\'' +  
               '}';  
    }  
}  

裤子类实现衣服接口:

package internalclasstest.com;
//Pants(裤子)类实现Clothing接口
public class Pants implements Clothing {  
    private String name;  
    private String type = "Pants";  
  
    public Pants(String name) {  
        this.name = name;  
    }  
  
    @Override  
    public String getName() {  
        return name;  
    }  
  
    @Override  
    public String getType() {  
        return type;  
    }  
  
    @Override  
    public String toString() {  
        return "Pants{" +  
               "name='" + name + '\'' +  
               ", type='" + type + '\'' +  
               '}';  
    }  
}

测试代码:

package internalclasstest.com;
//编写一个ClothingStore类,其中包含以Clothing作为形参和返回值的方法。
public class ClothingStore {  
	  
    // 方法:接收Clothing作为参数  
    public void displayClothing(Clothing clothing) {  
        System.out.println(clothing);  
    }  
  
    // 方法:返回Clothing  
    public Clothing getClothingByName(String name, String type) {  
        if ("shirt".equalsIgnoreCase(type)) {  
            return new Shirt(name);  
        } else if ("pants".equalsIgnoreCase(type)) {  
            return new Pants(name);  
        }  
        return null; // 如果没有匹配的类型,返回null(或者抛出异常)  
    }  
  
    public static void main(String[] args) {  
        ClothingStore store = new ClothingStore();  
  
        // 获取并显示衬衫  
        Clothing shirt = store.getClothingByName("White Shirt", "shirt");  
        store.displayClothing(shirt);  
  
        // 获取并显示裤子  
        Clothing pants = store.getClothingByName("Blue Jeans", "pants");  
        store.displayClothing(pants);  
    }  
}

运行结果如下:

 

 

 

 

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值