Java中的 抽象类、接口

本文深入探讨了抽象类和接口的概念,包括它们的定义、特点和使用场景。详细讲解了抽象类与接口在多态、继承和实现方面的区别,以及它们在软件开发中的重要作用。

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

抽象类

  • 什么是抽象类
    在这里插入图片描述
    1、抽象类怎么定义?在class前添加abstract关键字就行了。
//这就是一个抽象类
public abstract class student{
}

2、抽象类是无法实例化的,无法创建对象的,所以抽象类是用来被子类继承的。

//错误,抽象类不可创建对象
 student ssr=new student();

3、final和abstract不能联合使用,这两个关键字是对立的

//这样是错误的,抽象类目的是让别人来实现它
//而final是不可被继承的,两者对立,不可同时使用
public final abstarct classs student{
}

4、抽象类的子类可以是抽象类。也可以是非抽象类
5、抽象类虽然无法实例化,但是抽象类有构造方法,这个构造方法是供子类使用的。
6、抽象类中不一定有抽象方法,抽象方法必须出现在抽象类中。
7、抽象方法怎么定义?

//抽象方法
public abstract void doSome();

8、一个非抽象的类,继承抽象类,必须将抽象类中的抽象方法进行覆盖/重写/实现。

//创建一个抽象类
public abstract A{
  public abstract int sum(int x, int y);
    public abstract int sun(int x, int y);
   }
 //B继承A时,要将A的抽象方法重写
public class B extends A{
    //重写sum方法
    public int sum(int x,int y){
       return x+y;
    }
     //重写sun方法
    public int sun(int x,int y){
       return x-y;
    }
}

9、java语言中凡是没有方法体的方法都是抽象方法
不对,错误的。
Object类中就有很多方法都没有方法体,都是以“;”结尾的,但他们都不是抽象方法,例如:
public native int hashCode();
这个方法底层**调用了C++**写的动态链接库程序。
前面修饰符列表中没有:abstract。有一个native。表示调用JVM本地程序

接口

接口的基础语法

1、接口是一种“引用数据类型”。
2、接口是完全抽象的。(抽象类是半抽象的)
3、接口怎么定义:[修饰符列表] interface 接口名 {}

//接口的定义
public interface student{
}

4、接口支持多继承。

public interface A{}
public interface B{}
//C可以同时继承A、B
public interface C implements A,B{
}

5、接口中只有常量+抽象方法。
6、接口中所有的元素都是public修饰的
7、接口中抽象方法的public abstract可以省略。

//抽象方法可以直接这样定义
int sum(int x,int y);

8、接口中常量的public static final可以省略

//常量可以直接这样定义
double PI=3.1415926;

9、接口中方法不能有方法体。接口中的方法都是抽象方法10、一个非抽象的类,实现接口的时候,必须将接口中所有方法加以实现。

public interface A{
    int sum(int x,int y);
    int sun(int x,int y);
}
//非抽象的类
public class B implements A{
   //重写sum方法
    public int sum(int x,int y){
       return x+y;
    }
     //重写sun方法
    public int sun(int x,int y){
       return x-y;
    }

11、一个类可以实现多个接口。

public interface A{}
public interface B{}
//用class修饰的C也可以同时实现A、B
public class C implements A,B{

12、extends和implements可以共存,extends在前,implements在后。

//父类
public class A{}
//接口
public interface B{}
   //C可以继承A然后实现B接口
public class C extends A implements B{
}

13、使用接口,写代码的时候,可以使用多态(父类型引用指向子类型对象)。

接口在开发中的作用

注意:接口在开发中的作用,类似于多态在开发中的作用。
多态:面向抽象编程,不要面向具体编程。降低程序的耦合度。提高程序的扩展力。

//创建一个类
public class Master{
		public void feed(Dog d){}
		public void feed(Cat c){}
//假设又要养其它的宠物,那么这个时候需要再加1个方法。(需要修改代码了)
//这样扩展力太差了,违背了OCP原则(对扩展开放,对修改关闭。)
}
//
public class Master{
	public void feed(Animal a){
// 面向Animal父类编程,父类是比子类更抽象的。
//所以我们叫做面向抽象编程,不要面向具体编程。这样程序的扩展力就强。
  }
}

接口在开发中的作用?
1、接口是不是完全的?是。
2、而我们以后正好要求,面向抽象编程。
3、面向抽象编程这句话以后可以修改为:面向接口编程。
4、有了接口就有了可插拔。可插拔表示扩展力很强。不是焊接死的
5、主板和内存条之间有插槽,这个插槽就是接口,内存条坏了,可以重新买一个换下来。这叫做高扩展性。(低耦合度。)
6、总结一句话:三个字解耦合
面向接口编程,可以降低程序的耦合度,提高程序的扩展力。符合OCP开发原则。
7、接口的使用离不开多态机制。(接口+多态才可以达到降低耦合度。)
接口可以解耦合!
任何一个接口都有调用者和实现者。
接口可以将调用者和实现者解耦合。
调用者面向接口调用。
实现者面向接口编写实现。
以后进行大项目的开发,一般都是将项目分离成一个模块一个模块的,模块和模块之间采用接口衔接。降低耦合度。

抽象类和接口有什么区别

在这里我们只说一下抽象类和接口在语法上的区别

  • 抽象类是半抽象的,接口是完全抽象的。
  • 抽象类中有构造方法,接口中没有构造方法。
  • 接口和接口之间支持多继承,类和类之间只能单继承。
  • 一个类可以同时实现多个接口,一个抽象类只能继承一个类(单继承)
  • 接口中只允许出现常量和抽象方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值