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);
}
}
运行结果如下: