抽象类和接口类的基础知识

1.抽象类

abstract修饰的类就是抽象类(父类通常是抽象的,不能实例化)

格式:public abstract class A{…}

特征:①不可以直接实例化
②可以有构造方法,可以有属性(留给子类使用),可以有自定义方法
③可以有抽象方法,子类必须重写抽象父类的抽象方法,除非子类也是抽象类

应用场景:是一个 (is a) A extends [abstract] B 用于重用

举个例子:A为抽象父类,A定义了一个方法:会计算。B,C为子类,D类想用类B和类C的方法。B会加法,C会减法。D也想会计算。

public abstract class A(){
	
	private String name;
	
	public A(String name){
		this.name
	}
	
	public abstract int cal(int a,int b)}
public class B extends A(){
	//子类B必须重写抽象父类的抽象方法
	@Override
	public int cal(int a,int b){
		return a+b;
	}
}
 
public class C extends A(){
	//子类C必须重写抽象父类的抽象方法
	@Override
	public int cal(int a,int b){
		return a-b;
	}
}
public class D{
	//D想用A的计算
	public void cal(A a,int c,int b){
		System.out.println(a.cal(c,b));
	}
}
//测试类
public class Test{
	public static void main(String[] args){
		//instance实例
		D d = new D();
		d.cal(b,c:2,b:3);//得到的值为5
		d.cal(c,c:2,b:3);//得到的值为-1
	}
}

2.接口

格式:public interface A {…}

特点:①不可以直接实例化
②不能有构造方法,属性默认为公共的静态的常量;方法默认为公共的抽象的,不能有方法体
③实现类(子类)implements必须重写父接口的所有方法,除非子类是抽象类或接口

应用场景:有一个(has a) A implements interface B 用于扩展

(有一个类A,类B想扩展A的功能,那么先新建一个接口;再新建一个新的类(B)继承原来的类(A),再实现一个接口)

给Calculator定义了一个带参方法
	public class Calculator{
		public int add(int a,int b){
			return a+b;
		}
	}
	
	//Calculator2类想扩展Calculator类的方法,需要先新建一个接口MultiAdd
	public interface MultiAdd{
		int add(int...arr);
	}
	
	//Calculator2类继承Calculator,实现MultiAdd
	public class Calculator2 extends Calculator implements MultiAdd {
		
		@Override
		public int add (int...arr){
			int sum = 0;
			for(int i : arr){
				sum = add(sum,i);
			}
			return sum;
		}
	}
	
	//测试类
	public class Test{
		public static void main(String[] args){
			Calculator2 c2 = new Calculator2;
		}
	}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值