java笔记之抽象类和接口

举报
iOS逆向 发表于 2021/10/16 00:23:11 2021/10/16
【摘要】 1.抽象类 客观存在的一类事物,当这类事物都是抽象的,无法具体的描述。 1)语法: 修饰符 abstract class 类名{ } 2)特点: 抽象类是一个不具体的类 抽象类可以包含不具体的行为 是一个规范,用来约定子类或者小类型的行为 3) 抽象类的特性 抽象类不能进行实例化 使用abstract关键字定义抽...

1.抽象类

客观存在的一类事物,当这类事物都是抽象的,无法具体的描述。

1)语法:

修饰符 abstract class 类名{

}

2)特点:

抽象类是一个不具体的类

抽象类可以包含不具体的行为

是一个规范,用来约定子类或者小类型的行为

3) 抽象类的特性

抽象类不能进行实例化

使用abstract关键字定义抽象类

抽象类中的抽象方法也需要用abstract修饰,同时不能存在方法体

抽象类中不一定有抽象方法

有抽象方法的类,一定是抽象类

如果子类继承了抽象类,那么子类必须实现抽象类的抽象方法;如果子类继承了抽象类,而不去实现抽象类,子类也必须为抽象类

如果抽象类中没有定义构造器,那么javac会自动加上默认构造器;如果抽象类中有了有参构造器,且没声明无参构造器,那么在子类构造器中需要显式的调用抽象类的构造器。

4)抽象类的使用场景

抽象类用于分析和设计的工具

抽象类是一个规范,用来约束子类

5)抽象类与类的区别:

1)相同点:

语法上都要使用class关键字

都包含属性和方法

都可以进行方法的重载

如果没有提供构造器,那么javac会自动加上

子类都可以重写父类的方法

具体的子类在创建对象时,都需要调用父类的构造器

都可以定义引用来指向子类或小类型所创建的对象(多态)

多可以被抽象类和具体类所继承

2))不同点

抽象类不能进行实例化

抽象类可涵有抽象的方法

2.javaBean规范:(针对实体类)

是一种编程习惯。按照此规范定义出来的java类使用起来比较方便。

1)内容:

必须有包

必须为属性提供getter和setter

必须提供无参构造器

实现序列化(I/O流)

重写hashCode(),eqauls(),toString()

3.接口:

是一种规范和约束,用来限定实现类里面包含的行为

1)目的:

为了解决java单继承的弊端。同时区分出解决问题的中心

2)语法:

Interface 接口名{

接口内容(常量、抽象方法)

}

注:类实现接口的语法:

修饰符 class 类名 implements 接口1,接口2{

类体

}

3)接口的特性:

接口不能实例化(除非是有匿名内部类实现它)

接口中包含的方法全都是抽象方法,属性均为常量(public static final 数据类型 变量名=值)

4)接口可以多继承接口

语法:

Interface 接口名 extends 接口1,接口2{

接口体

}

5)借口可以定义变量引用指向实现类的对象(接口的多态)

注:接口可以作为变量、参数和返回值来引用实现类的对象

4.软件的设计原则:

高内聚,低耦合

高内聚:在类内部,关联度越高越好

低耦合:在类与类之间,关联度越低越好

1)实现方式:

高内聚:一个类只做一件事

低耦合:面向接口编程

注:面向接口编程:

在软件开发过程中,在类中调用另一个类的方法。他们之间的关联度很高;那么可以使用接口替代类,减低他们之间关联度(可进一步采用工厂模式来屏蔽对象的创建过程)

5.面向接口的编程步骤:

1)抽取接口:

注:根据名词中存在的相同的行为i,根据is-a关系去建立,根据系统的重点研究对象来确定使用继承(抽象类、类)或实现(接口)

2)定义接口:

将使用的行为在接口中定义出来,形成规范和约束

3)建立实现类并实现接口

注:好处,提高了系统的可扩展性和可维护性。





文章来源: kunnan.blog.csdn.net,作者:iOS逆向,版权归原作者所有,如需转载,请联系作者。

原文链接:kunnan.blog.csdn.net/article/details/84542120

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。