Java基础5
Java基础5
DouDouLee 发表于2年前
Java基础5
  • 发表于 2年前
  • 阅读 20
  • 收藏 1
  • 点赞 2
  • 评论 0

移动开发云端新模式探索实践 >>>   

摘要: 抽象类(abstract class)与接口(interface)、this、super

1、抽象类(abstract class)与接口

抽象类:一个类中含有抽象方法,这个类就是抽象类。可以通过把类或类中的方法声明为abstract来表示一个类是抽象类。只要包含一个抽象方法的类就得声明为抽象类,抽象类可以声明方法的存在而不去实现它。声明为抽象的方法不能包含方法体。抽象类的子类为父类的所有方法提供其具体实现,否则它也是抽象类。抽象类不能被实例化,但可以创建一个对象指向其子类的一个实例。抽象类可以包含部分方法的实现。

接口:接口是方法的集合。接口中的所有方法都没有方法体。接口中的成员变量都是static final类型。抽象类与接口的相同点:

1)都不能被实例化

2)接口的实现类或抽象类的子类只有实现了接口或抽象类中的方法后才能被实例化。

抽象类与接口的不同点:

1)接口只有定义,其方法不能在接口中实现,只有implements接口才能实现接口中定义的方法。抽象类可以有定义和实现,其方法可以在抽象类中被实现。

2)接口需要implements,一个类可以实现多个接口,抽象类只能被extends,不能多愁继承。

3)接口强调特定功能实现,设计理念是“has-a”关系。抽象类强调所属关系,设计理念为"is-a"关系。

4)接口中的成员变量默认为public static final且必须给其赋初值,成员方法都是public、abstract的且只能被这两个关键字修饰。

抽象类可以有自己的数据成员变量,默认为 default,也可以被定义为private/protected/public。也可以有非抽象的成员方法,抽象类中的抽象方法不能用private/static/synchronized/native等访问修饰符修饰,方法必须以分号结束,且不带花括号。

5)接口被应用于实现比较常用的功能,便于以后维护或添加、删除方法;抽象类更倾向于充当公共类的角色,不适用于以后重新对里面的代码进行修改。

抽象类多用于在同类事物中有无法描述的方法的场景,子类与父类之间存在逻辑上的层次结构时,可以使用抽象类。

接口多用于不同类之间,定义不同类之间的通信规则。

抽象类可以继承接口,也可以继承具体类,也可以有静态main方法。

2、this、super

this用来指当前实例对象。

class People{
 String name;
 public People(String name){
 
  this.name = name;//区分对象的成员变量与方法的形参

  //this.name为成员变量String name.

 }
}

super可以用来访问父类的方法或成员变量。当子类的成员变量和方法名与父类相同时会覆盖父类的,这时访问父类的成员变量和方法时只能通过super关键字。

class Base{
 public void f(){
  System.out.println("Base f");
 }
}
class Sub extends Base{
 
 public void Sub(){
 
  super.f();//子类调用父类的同名f()用super且必须为其第一条语句
  
  System.out.println("Sub f");
 }
}

 

 

 

 

  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
粉丝 6
博文 91
码字总数 45242
×
DouDouLee
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: