学习笔记(63):4天速学JAVA面向对象-作业讲解之接口作为方法参数的使用

研发管理 专栏收录该内容
62 篇文章 0 订阅

立即学习:https://edu.csdn.net/course/play/24609/274883?utm_source=blogtoedu

1、重点掌握图形和接口相关的代码。 
2、自定义抽象类 Account 实现封装,特征:账户余额( balance ) ,在该类中提供一个计算利息并返回的抽象方法。自定义 FixedACcount 类继承Account类并重写抽象方法,要求在 main 方法中使用多态方式构造对象并存入 1000元,计算利息后打印出来(其中利率 0.003 )。
3、定义InterfaceA接口,里面含有一个抽象方法 int method(int n); 
定义 ClassA 类实现 InterfaceA 接口并重写 method 方法,要求计算 1 到 n 的和并返回
定义 ClassB 类实现 InterfaceA 接口并重写 method 方法,要求计算 n 的阶乘并返回;
定义 TestInterface 测试类,里面包含一个参数为 IrlterfaceA 接口形参的方法,并在该方法体中调用method方法,最后在main方法中调用该方法。

package cn.itxdl.day11;

public abstract class Account {
	private int balance;
	

	public Account() {
		super();
	}

	public Account(int balance) {
		super();
		setBalance(balance);
	}

	public int getBalance() {
		return balance;
	}

	public void setBalance(int balance) {
		if(balance>0) {
		this.balance = balance;
		}else {
			System.out.println("不合理");
		}
	}
	//提供一个抽象方法返回利息
	public abstract double getlixi();
	//abstract 关键字和final关键字不能共同修饰一个方法 final不能被重写
	//public abstract final double getlixi();
	//abstract 关键字和 static 关键字不能共同修饰一个方法。抽象方法不能被直接调用 static 可以使用类名.调用
	//public abstract static double getlixi();
	//private 和 abstract 不能共同修饰一个放,private 修饰的方法不能被继承
	//private abstract double getlixi();

}
package cn.itxdl.day11;

public class FixedAccount extends Account {

	public FixedAccount(int i) {
		// TODO Auto-generated constructor stub
		//调用父类有参构造方法 把i传给父类的构造方法 setBalance(balance)
		super(i);
	}

	@Override
	public double getlixi() {
		// TODO Auto-generated method stub
		//计算利息  金额 乘以 利率
		return getBalance()*0.003;
	}
	
	public static void main(String[] Ages) {
		//使用构造方法存入1000元
		Account ac = new FixedAccount(1000);
		System.out.println("利息是"+ ac.getlixi());
		
	}

}

定义InterfaceA接口,里面含有一个抽象方法 int method(int n); 

package cn.itxdl.day11;

public interface InterfaceA {
	public abstract int method(int n);
}

定义 ClassA 类实现 InterfaceA 接口并重写 method 方法,要求计算 1 到 n 的和并返回

package cn.itxdl.day11;

public class ClassA implements InterfaceA {

	@Override
	public int method(int n) {
		// TODO Auto-generated method stub
		//累加 m+ =i;
		int m = 0;
		for (int i=1;i<= n;i++) {
			// m  = m+i;
			m=m+i;
			
		};
		return m;
	}

	/*
	 * public static void main(String[] args) { // TODO Auto-generated method stub
	 * ClassA c = new ClassA(); System.out.println(c.method(100));
	 * 
	 * }
	 */

}

定义 ClassB 类实现 InterfaceA 接口并重写 method 方法,要求计算 n 的阶乘并返回;

package cn.itxdl.day11;

public class ClassB implements InterfaceA {

	@Override
	public int method(int n) {
		// TODO Auto-generated method stub
		//阶乘
		int m =1;
		for (int i =1 ; i<=n  ; i++) {
			m=m*i;
		}
		return m;
	}
	
	/*
	 * public static void main(String[] Arges) { ClassB b= new ClassB();
	 * System.out.println(b.method(10)); }
	 */
}

定义 TestInterface 测试类,里面包含一个参数为 IrlterfaceA 接口形参的方法,并在该方法体中调用method方法,最后在main方法中调用该方法。

package cn.itxdl.day11;

public class TestInface {
	//使用InterfaceA 接口形参
	public int sum(InterfaceA m) {
		return m.method(10);
		
	}

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		TestInface s= new TestInface();
		System.out.println("结果等于"+s.sum(new ClassA())); //调用A类的重写方法  累加
		System.out.println("结果等于"+s.sum(new ClassB())); //调用B类的重写方法 阶乘

	}

}

 

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值