java 抽象类与接口

抽象类:

抽象(abstract): 修饰方法 ------抽象方法

修饰类-----抽象方法

抽象方法,没有实现的部分,也就是只有声明,没有具体实现.

抽象类中的抽象方法,强制子类去重写 作为父类的抽象类.

抽象类不能实例化,即不能利用抽象了实例化对象(尽管抽象类可以有构造函数)


抽象类 只要记住一句:除了不能实例化对象之外,和Java普通类没有区别.

抽象类可以被继承,如果子类不是抽象类,那么必须要实现父类抽象方法.如果子类还是抽象类,可以不用实现,但必须在子类的衍生类中有最初抽象父类方法的实现.

抽象类特点

1.成员变量:可以是成员变量,也可以是常量

2.成员方法:可以有抽象方法,也可以有成员方法(默认实现方法)

3.构造函数:可以写构造函数


抽象类 中不一定有抽象方法,但是抽象方法一定是在抽象类中的.



abstract  不能与哪些关键字共存?

1.abstract 和  static

static 修饰方法用类名调用 abstract 修饰抽象方法  没有实现,没有实现的方法只是声明,不能调用

2.abstract 和  final 

final 修饰的方法是不能被继承的,何谈子类重写父类的抽象方法

3.abstract 和 private

private 修饰的方法只能在本类调用,类外不能调用,子类同样访问不了


接口:

接口特点:不需要方法实现,接口中只能声明抽象方法.

如果不写 public abstract  修饰接口中声明的方法,系统会自动默认补上

接口也不能实例化对象,但是可以使用多态的方式创建实现类的对象.

public class D2 {
	public static void main(String[] args) {
		InterA  a = new A();
	}
}interface InterA{
	abstract void Print();
	
}class A implements InterA{
	@Override
	public void Print() {
		// TODO Auto-generated method stub
		
	}
}

 接口不是类

1.成员变量:只可以有常量

2.成员方法:只可以有抽象方法,不可以有成员方法

3.构造方法:没有


 当在接口中声明变量 ,这时 系统默认是  public static final 修饰的

interface InterA{
	int a = 0;
	public static final int b =0;
}


这里如果a 不赋初值 就会报错,根本原因就是 应为他不是成员变量  而是 public static final 修饰的常量,必须有初值.


这里的 b  变量  就是 完整的变量命名方式,建议初学者使用B  命名格式,不容易搞错



总结

类和类的关系:继承关系  单继承和多层继承

类和接口的关系:实现关系 单实现和多实现

接口和接口:可以多继承,(只有在接口这里,才可以'多继承')



如图,这样的多继承,编译器不会报错.





  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值