Java程序设计:必实验3 抽象类及接口

(1.1) 定义一个抽象类Human:包含一个成员变量String name;构造方法Human(String name),用于初始化姓名name;一个抽象方法void  sayHello()。

package 必实验3;

//定义一个抽象类Human
abstract class Human
{
	//一个成员变量name
	String name;
	//含参构造函数,初始化姓名
	public Human(String n) {
		name = n;
	}
	//一个抽象方法
	abstract public void sayHello();
}

//定义Human的子类People对抽象类进行测试
class People extends Human
{
    public People(String n)
    {
    	super(n);
    }
    @Override
    public void sayHello()
    {
    	System.out.println("你好!我叫"+name+"!");
    }
}
public class Test_Human {
	
	public static void main(String[] args) {
		
		java.util.Scanner input =new java.util.Scanner(System.in);
        System.out.print("请输入姓名:");
        String name =input.next();
        
		Human people = new People(name);
		people.sayHello();
	}
}

(1.2) 定义三个继承抽象类Human的类,分别命名为Chinese、French和Japanese,在这三个类中重写sayHello()方法,分别输出一句中文、法语和日语的问候;

package 必实验3;

//Chinese类继承Human
class Chinese extends Human
{
	//调用父类的含参构造函数
	public Chinese(String n)
	{
		super(n);
	}
	//重写含参构造函数
	 @Override
	public void sayHello()
	{
		System.out.println("你好,我的名字是"+name);
	}
}

//French类继承Human
class French extends Human
{
	//调用父类的含参构造函数
	public French(String n)
	{
		super(n);
	}
	//重写含参构造函数
	 @Override
	public void sayHello()
	{
		System.out.println("Bonjour, mon nom est "+name);
	}
}

//Japanese类继承Human
class Japanese extends Human
{
	//调用父类的含参构造函数
	public Japanese(String n)
	{
		super(n);
	}
	//重写含参构造函数
	 @Override
	public void sayHello()
	{
		System.out.println("こんにちは、私の名前は"+name);
	}
}

public class Test_three {
	
	public static void main(String[] args) {
	 //构建Chinese对象并调用sayHello
     Human chinese = new Chinese("名井南");
     chinese.sayHello();
     
     
     //构建French对象并调用sayHello
     Human french = new French("Nom Yinan");
     french.sayHello();
     
     //构建Japanese对象并调用sayHello
     Human japanese = new Japanese("名井みなみ");
     japanese.sayHello();
	}	
	
}

(1.3) 定义一个测试类HumanTest:创建一个包含3个Human对象的数组,3个Human对象来自Chinese、French和Japanese类,循环调用该数组中的元素的sayHello ()方法。

package 必实验3;

//创建HumanTest类
class HumanTest
{
	//成员变量为human数组
	Human human[];
	//含参构造函数,初始化human数组
	public HumanTest(Human h[])
	{
		human = new Human[3];
		for(int i=0;i<3;i++)
		{
			human[i] = h[i];
		}
	}
	//定义成员display方法,循环调用该数组中的元素的sayHello方法
	public void display()
	{
		for(int i=0;i<3;i++)
		{
			human[i].sayHello();
		}
	}
}

public class Test_array {

	public static void main(String[] args) {
		  //创建一个包含3个Human对象的数组
	      Human hhuman[];
	      hhuman = new Human[3];
	      //3个Human对象来自Chinese、French和Japanese类
	      hhuman[0] = new Chinese("名井南");
	      hhuman[1] = new French("Nom Yinan");
	      hhuman[2] = new Japanese("名井みなみ");
	      //创建一个HumanTest对象来进行测试
	      HumanTest humanTest = new HumanTest(hhuman);
	      humanTest.display();
	}	
	
}

(1.4) 通过一个接口(命名为Human)和三个实现类(命名为Chinese、French和Japanese)来达到如上类似的效果。

package 必实验3_;

//定义Human接口
public interface Human {
	
	abstract void sayHello(String name);
}

package 必实验3_;

//用implements关键字继承Human接口
class Chinese implements Human
{
	 @Override
	public void sayHello(String name)
	{
		System.out.println("你好,我的名字是"+name);
	}
}

class French implements Human
{
	 @Override
	public void sayHello(String name)
	{
		System.out.println("Bonjour, mon nom est "+name);
	}
}

class Japanese implements Human
{
	 @Override
	public void sayHello(String name)
	{
		System.out.println("こんにちは、私の名前は"+name);
	}
}


public class Test_interface {

	public static void main(String[] args) {
		 //构建Chinese对象并调用sayHello
		 Human chinese = new Chinese();
		 chinese.sayHello("名井南");
		 
		 
		 //构建French对象并调用sayHello
		 Human french = new French();
		 french.sayHello("Nom Yinan");
		 
		 //构建Japanese对象并调用sayHello
		 Human japanese = new Japanese();
		 japanese.sayHello("名井みなみ");
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值