Java学习笔记

本文深入探讨了接口和抽象类的概念,包括它们的定义、作用、语法和实现方式。对比了接口与抽象类的主要区别,如方法实现、变量类型、多重继承等特性,帮助读者理解面向对象设计的重要机制。

接口和抽象类

接口
• 接口中可以规定方法的原型:方法名、参数列表以及返回类型,但不规定方法主体;
• 也可以包含基本数据类型的数据成员,但它们都默认为static和 final。

接口的作用

  1. 是面向对象的一个重要机制
  2. 继承多个设计。
  3. 建立类和类之间的“协议”
    ▫ 将类根据其实现的功能分组用接口代表,而不必顾虑它所在的类继承 层次;
    这样可以最大限度地利用动态绑定,隐藏实现细节;
    ▫ 实现不同类之间的常量共享。

接口的语法
• 声明格式为
[接口修饰符] interface 接口名称 [extends 父接口名]{
…//方法的原型声明或静态常量
}

• 接口的数据成员一定要有初值,且此值将不能再更改,可以省略 final关键字。
• 接口中的方法必须是“抽象方法”,不能有方法体,可以省略 public及abstract关键字。

实现接口:
public class 类名称 implements 接口名称 {
//在类体中实现接口的方法
//本类声明的更多变量和方法
}

【注】
▫ 必须实现接口中的所有方法;
▫ 来自接口的方法必须声明成public。

一个类可以实现多个接口,通过这种机制可实现对设计的多重继承。
语法:
[类修饰符] class 类名称 implements 接口1, 接口2, … {
… …
}

接口扩展
接口可通过扩展的技术派生出新的接口
▫ 原来的接口称为超接口(super interface);
▫ 派生出的接口称为子接口(sub interface)。

语法:

 interface 子接口的名称 extends 超接口的名称1,超接口的名称2,… {
	...
}
interface Shape{
	double pi=3.14;
	void setColor(String str); 
} 
//声明Shape2D接口扩展了Shape接口 
interface Shape2D extends Shape {
	double area();
}
class Circle implements Shape2D { 
	double radius; 
	String color; 
	public Circle(double r) {
	   radius=r;
	}
	public double area() { 
	   return (pi*radius*radius);
	}
	public void setColor(String str){
	   color=str;
	   System.out.println("color="+color);
	}
} 
public class ExtendsInterfaceTester{     
    //测试类 
    public static void main(String []args) {
        Circle cir;
        cir=new Circle(2.0);
        cir.setColor("blue");
        System.out.println("Area = " + cir.area());
	}
}  

运行结果
color=blue
Area = 12.56

抽象类:(用abstract声明)
abstract class 类名{
//声明抽象方法
}
一个抽象派生的子类,子类通常提供父类的抽象方法的实现,如果子类中没有实现其父类中所有抽象方法,那么这个子类也必须声明为abstract。

抽象类和接口区别:

  1. 接口的方法默认是 public,所有方法在接口中不能有实现(Java 8 开始接口方法可以有默认实现),而抽象类可以有非抽象的方法。
  2. 接口中除了 static、final 变量,不能有其他变量,而抽象类中则不一定。
  3. 一个类可以实现多个接口,但只能实现一个抽象类。接口自己本身可以通过 extends 关键字扩展多个接口。
  4. 接口方法默认修饰符是 public,抽象方法可以有 public、protected 和 default 这些修饰符(抽象方法就是为了被重写所以不能使用 private 关键字修饰!)。
  5. 从设计层面来说,抽象是对类的抽象,是一种模板设计,而接口是对行为的抽象,是一种行为的规范。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值