面向对象程序设计的一些思考

本文探讨了接口与抽象类在面向对象编程中的差异,包括抽象类可包含非抽象方法以提高代码复用,一个类可继承一个抽象类但可实现多个接口等。同时,文章详细阐述了面向对象的封装、继承和多态三个基本属性及其作用,强调了封装的单一性原则,继承带来的属性和方法的继承与扩展,以及多态带来的灵活性。此外,还提到了匿名内部类的特点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.接口与抽象类之间的区别

  • 1.抽象类中可以写非抽象类的方法,从而避免在子类中重复书写他们,提高代码的复用效率。 接口中只能有抽象的方法。

  • 2.一个类只能继承一个直接父类,这个父类可以是具体的类也可以是抽象的类,但一个类可以实现多个接口。(接口是对动作的抽象,而抽象是对本源的抽象——举个例子,男人,女人这两个类可以抽象成更高级的抽象类-人,但一个生物不可能既是人又不是人,所以一个类只能继承一个抽象类)

  • 3.接口里只能对方法进行声明,抽象类既可以对方法进行声明,也可以进行实现。

  • 4.抽象类中的成员变量是多种多样的,而接口中的成员变量只能是 public static final 类型的

  • 5.接口中不能含有静态代码块以及静态方法(用static修饰的方法),而抽象类可以有静态代码块和静态方法。

2.简述面向对象语言的3个基本属性及其作用

  • 封装、继承、多态

**封装:**把事物抽象成一个类,将事物拥有的属性和动作隐藏起来,只保留特定的方法与外界联系。 封装符合面向对象设计的 单一性原则 一个类把自己要做的事情封装起来,而不是暴露给其他类处理,当内部逻辑发生变换时,外部调用不用因此修改,他们只调用外部的接口,而不用关心内部的实现。

继承:
Java的类可以分为三类:

类:使用class定义,没有抽象方法

抽象类:使用abstract class定义,可以有也可以没有抽象方法

接口:使用inerface定义,只能有抽象方法

在这三个类型之间存在如下关系:

类可以extends:类、抽象类(必须实现所有抽象方法),但只能extends一个,可以implements多个接口(必须实现所有接口方法)

抽象类可以extends:类,抽象类(可全部、部分、或者完全不实现父类抽象方法),可以implements多个接口(可全部、部分、或者完全不实现接口方法)

接口能extends多个接口

继承以后子类可以得到什么:

子类拥有父类非private的属性和方法(//这里其实我是持怀疑态度)

子类可以添加自己的方法和属性,即对父类进行扩展

子类可以重新定义父类的方法,即多态里面的覆盖。

关于构造函数:

构造函数不能被继承,子类可以通过super()显示调用父类的构造函数

创建子类时,编译器会自动调用父类的 无参构造函数

如果父类没有定义无参构造函数,子类必须在构造函数的第一行代码使用super()显示调用

##3.简述匿名内部类的特点

不具有类名; 不能具有抽象和静态属性; 不能派生出子类。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值