使用Java实现面向对象编程——第四章 异常

1、 接口:接口就是给出一些没有内容的方法,封装到一起,到某个类要使用的时候,在根据具体情况把这些方法写出来。


接口是更加抽象的抽象的类,

抽象类里的方法可以有方法体,

接口里的所有方法都没有方法体。

接口体现了程序设计的多态和高内聚低偶合的设计思想。


接口是一种规范和标准,他们可以约束类的行为,是一些方法特征的集合,但是没有方法的实现。


接口可以看作一种特殊的“抽象类”,但是采用与抽象类按群不同的语法来表示;


抽象类有利于代码的重用,接口有利于代码的扩展和维护;


接口的特性:

接口不可以被实例化

实现类必须实现接口的所有方法   // 常作为类型使用

实现类可以实现多个接口    //Java中的多继承

接口中的变量都是静态常量,(属性都是全局静态常量,方法都是全局抽象方法)


接口有比抽象类更好的特性:

1.可以被多继承

2.设计和实现完全分离

3.更自然的使用多态

4.更容易搭建程序框架

5.更容易更换实现


接口注意事项:

  1、接口不能被实例化

  2、接口中所有的方法都不能有主体。错误语法例:void aaa(){}←(注意不能有花括号),接口可以看作更加抽象的抽象类。

  3、一个类可以实现多个接口,非抽象类实现接口时必须实现接口中的全部方法,(抽象类利于代码复用,接口利于代码维护)

  4、接口中可以定义常量(int a=1;//加不加static都是静态的,不能用private和protected修饰),不能定义变量

  ★接口中可以有变量[但变量不能用private和protected修饰],接口中的变量,本质上都是static的而且是final类型的,不管你加不加static修饰。

                    访问形式:接口名.变量名

  ★在java中,把常用的变量,定义在接口中,作为全局变量使用,接口中的属性都会自动用public static final修饰,即接口中的属性都是全局静态变量;

  5、一个接口不能继承其它的类,但是可以继承别的接口

  6、接口名命规则与类相同,public在整个项目中可见,如果省略,则只能在当前包中可见;

  7、一个重要的原则:当一个类实现了一个接口,要求该类把这个接口的所有方法全部实现,否则必须定义为抽象类;

  8、接口中所有方法都是抽象方法,接口中方法都会自动调用public abstract修饰;即接口中只有全局抽象方法;

  9、和抽象类一样,接口也不能实例化,接口中不能有构造方法;

  10、接口之间可以通过extends实现继承关系,一个接口可以继承多个接口,但不能继承类;


JAVA中接口的定义语法:

修饰符 interface 接口名 extends父接口1,父接口2,……{

//常量定义

//方法定义

}


                               使用接口:eg:usb接口:


类接口的实现语法:

class 类名 extends父类名 implements 接口1,接口2,……{

//类成员

}

2、 使用接口:一个类只能有一个直接父类,但可以通过implements实现多个接口,当类在继承父类的同时又实现了多个接口时,extends关键字必须位于implements关键字之前;


编码实现


eg:防盗门实现过程:

 


接口表示一种能力:体现在接口的方法上

●面向接口编程:

        


接口是一种约定:体现在接口名称和注释上;

●面向接口编程:程序设计时面向接口的约定而不考虑具体实现;

3、在C#中定义接口语法:


语法:


实现语法:


Eg:定义接口:


定义实现类:


注意事项:

  接口之间可以通过“:”来实现继承关系,一个接口可以继承多个接口,但接口不能继承类;

  类只能继承一个父类,但可以实现多个接口,使用“:”来继承类并实现接口;

  接口定义零个或多个成员,成员主要是方法、属性和索引器。接口中不能包含常量、变量和构造方法,也不能包含任何静态成员;

  接口中成员访问修饰符时public,定义接口时显示指定任意修饰符都是非法的;

  按照惯例,C#中接口以大写字母“I“开头;

4、JAVA接口与C#接口对比:


 


JAVA


C#


定义


interface


interface


实现


implements


:


静态成员


常量



public


可以显示使用


不能显示使用

5、抽象类与接口应用方式:


抽象类

  不能对字段抽象(因为字段只能用等号赋值,没其他代码(不同于属性),没什么抽象的意义);

  不能对 private 抽象;

  可以含有非抽象的成员;

  不能实例化;

  只能从一个类继承;

  可以被抽象类继承,此时不必实现抽象成员;

  可以被普通类继承,此时必须实现抽象成员(网上有些说的不必实现,其实那有错误,普通类继承自抽象类时,必须实现抽象类的全部抽象成员);

  实现抽象成员时要加 override;


接口:

  不能对字段接口(因为字段只能用等号赋值,没其他代码(不同于属性),没啥接口的意义);

  接口只能是 public 的,且不能使用 public 关键字;

  除了接口成员,不能有其他任何实现代码;

  不能实例化;

  可以从多个接口继承;

  可以被接口继承;此时不必也无法实现接口成员;

  可以被抽象类继承,此时必须实现接口成员;

  可以被普通类继承,此时必须实现接口成员;

  实现接口不能加 override,必须加 public。

7、附加:


●java的继承是单继承,也就是一个类最多只能有一个父类,这种单继承的机制可保证类的纯洁性,比C++中的多继承机制简洁。但是不可否认,对子类功能的扩展有一定影响。所以:

1、 实现接口可以看作是对继承的一种补充。(继承是层级式的,不太灵活。修改某个类就会打破继承的平衡,而接口就没有这样的麻烦,因为它只针对实现接口的类才起作用);

2、实现接口可在不打破继承关系的前提下,对某个类功能扩展,非常灵活。


●接口是一个抽象类,接口中的方法是一个就有public访问修饰符的方法,接口中的属性是一个静态常量;

接口中的方法默认为public abstract,即使不写。接口中的方法不能被static修饰。

  • ●class是类的定义,extends是继承的关键字,implements是实现接口的关键字,interface是定义接口的关键字;

●接口的描述:


●接口类型实现类对象,也是多态的一种表现;

●接口是一个特殊的抽象类,接口中的所有方法都是抽象方法,所有的属性都是静态常量;


接口是Java提供的一个面向对象的机制;

接口可以继承接口;

使用接口是为了降低模块之间的耦合度;

一个类中可以实现多个接口:Java接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征,没有方法的实现,

因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能);

接口中只可以定义常量不可以定义变量是:如果接口可以定义变量,但是接口中的方法又都是抽象的,在接口中无法通过行为来修改属性;


●一个类实现接口,接口与实现类之间就是父-子关系
。子类本身实例化,子类实例化后赋值给父接口都是正常的,这是向上转型

●接口中定义的都是全局的公共的常量,会默认加上修饰符public、static、final。

●声明接口:

 

接口里变量只能是静态常量,必须赋值;

方法必须抽象方法;

接口只能使用public进行修饰,或者省略;


●eg:

 

分析:

  接口中定义的属性都是静态常量,4个选项中没有修改该常量,

所以没有异常,因此选择c;


●eg:

分析:

在java一般的用法中,如果要用普通类来实现接口,则必须实现该接口中的所有方法,这样就会导致需要实现多余的方法;

采用抽象类来实现方法,可以实现该接口中的部分方法,而且当其他类继承该抽象类时,只需要实现抽象类中未实现的方法即可。

例:  抽象类B只实现了接口A中的方法a、b,

当类C继承类B时,只需要实现B中未实现的接口c即可。

一般情况下,类C中的方法a、b都是调用父类B的方法a、b


●eg:

 

 


●eg:

 

分析:

调用study()方法时,要站在study()方法所在位置分析,

因为kid对象位于main方法里,并没有将age=5以参数形式传给study()方法中。

因此,study()方法在运行时,默认调用的是类下面的age成员变量。


● 接口不能包含具体方法,所以接口不能继承类(继承抽象类也不行)。

  接口可以继承多个更小的接口,这也是接口常用设计思路的基础:

  先细分程序功能,把每个独立的小功能都定义成微型接口,再以继承的方式,用小接口拼装出大型的多功能接口,方便为不同客户的具体需求实现定制化接口。发布和暴露给用户使用的是多功能的大接口;单一职能的众多小接口则保留给自己,因为每个小接口功能独立且互不依赖,方便调试和维护。

  值得注意的是,抽象类可以继承普通类,实现以普通类为基础,扩充抽象方法。

  C#中,有所谓“扩展方法”的设定,无需继承也可以扩充一个现有类的方法。


●接口中只能声明静态常量,声明变量时可以不用final static 关键字,但必须赋初始值。

  接口中的方法是默认或公开的抽象方法,不能有方法体;可以省略abstract关键字。


●public和abstract关键字可以修饰类和接口,接口名后无有()

  final可以修饰类但不能修饰接口;


●Java接口与抽象类的区别,

  接口只能存在public成员,而抽象类可以存在public,private,protected,default成员;

  接口只能存在抽象方法,抽象类存在抽象方法和实例方法。

  接口只能存在静态常量,而抽象类可以存在实例成员;

  接口没有构造方法,而抽象类存在。

 

 

原文地址:https://www.cnblogs.com/HQING/p/9488798.html

时间: 2024-08-03 11:12:58

使用Java实现面向对象编程——第四章 异常的相关文章

使用Java实现面向对象编程——第五章 异常

1. 尝试通过if-else来解决异常问题: Eg: public class Test2 {       public static void main(String[] args) {             Scanner in = new Scanner(System.in);             -             System.out.print("请输入除数:");             int num2 = 0;             if (in.ha

java面向对象编程——第四章 类和对象

OO:面向对象 OOP:面向对象编程 OOA:面向对象分析 OOD:面向对象设计 结构化编程:从顶向下,将一个大问题分解成更小的任务,然后为每一个更小的任务编写一个过程.最后程序员会编写一个主过程来启动程序流程,随后根据程序流程走向,调用想要的其它过程. 对象是存在的具体实体,具有明确定义的特征和行为. 万物皆为对象,对象因我关注而产生. 面向对象:一种认识事物的方式,注重对事物整体的认知,最符合人类自然的思维习惯. 对象是数据封装的结果. 类是具有相同属性和行为的一组对象的集合. 在软件系统中

java MySQL数据库编程 第四章 高级查询(二)

第四章 高级查询(二) (1)通过在子查询中使用EXISTS子句,可以对子查询中的行是否存在进行检查.子查询可以出现在表达式出现的如何位置 (2)子查询语句可以嵌套在SQL语句中任何表达式出现的位置. 一.EXISTS子查询 1.使用EXISTS语句判断该数据库对象是否存在: DROP TABLE IF EXISTS temp; 2. EXISTS作为WHERE语句的子查询: SELECT .....FROM 表名 WHERE EXISTS(子查询); 3. EXISTS关键字后面的参数是一个任

使用Java实现面向对象编程——第六章 框架集合

1.集合框架包含的主要内容及彼此之间的关系: 图1:   集合框架:是为了表示和操作集合而统一规定的一种统一的标准体系结构.               包含三大块的内容:对外的接口.接口的是实现和对集合运算的算法: Java集合框架提供了一套性能优良.使用方便的接口和类,它们位于java.util包中:       ●接口:表示集合的抽象数据类型,在图1中用虚线框表示,下图绿色的:                    ●实现:集合框架中接口的具体实现,图1中一实线表示,粗实线表示常用的:上图

使用Java实现面向对象编程——第三章 多态

1.多态:(polymorphism): 是具有表现多种形态能力的特征: (专业化的说法:)同一个实现接口(引用类型),使用不同的实例而执行不同的操作 指一个引用(类型)在不同情况下的多种状态.也可以理解成:多态是指通过指向父类的指针,来调用在不同子类中实现的方法. 多态是同一个行为具有多个不同表现形式或形态的能力, 多态就是同一个接口,使用不同的实例而执行不同操作,多态性是对象多种表现形式的体现. 多态的优点: 1. 消除类型之间的耦合关系 2. 可替换性 3. 可扩充性 4. 接口性 5.

JAVA的面向对象编程--------课堂笔记

JAVA的面向对象编程--------课堂笔记 面向对象主要针对面向过程. 面向过程的基本单元是函数.   什么是对象:EVERYTHING IS OBJECT(万物皆对象)   所有的事物都有两个方面: 有什么(属性):用来描述对象. 能够做什么(方法):告诉外界对象有那些功能. 后者以前者为基础. 大的对象的属性也可以是一个对象.   为什么要使用面向对象: 首先,面向对象符合人类看待事物的一般规律. 对象的方法的实现细节是屏蔽的,只有对象方法的实现者了解细节. 方法的定义非常重要.方法有参

面向对象编程(十四)——面向对象三大特性之多态②

面向对象最核心的机制——动态绑定,也叫多态. 通过下面的例子理解动态绑定,即多态 1 package javastudy.summary; 2 3 class Animal { 4 /** 5 * 声明一个私有的成员变量name. 6 */ 7 private String name; 8 9 /** 10 * 在Animal类自定义的构造方法 11 * @param name 12 */ 13 Animal(String name) { 14 this.name = name; 15 } 16

关于java中面向对象编程的一点点小感悟!!!

断断续续接触java已经有半年的时间,当然中间也有过很多事情,不得已而中断了java的学习.当初刚刚接触到java的时候,总是不能理解java的面向对象编程优点.平常生活中我们做事情的思维方式都是面向过程的,就拿最简单的我要上一个培训班来说: 第一步:当然得是网上.贴吧.朋友的口中来了解这个辅导班,以此来决定是否需要上这个辅导班. 第二步:当然就是当了解完成之后,对这个辅导班比较满意.自己就需要做准备来达到辅导班的要求,比如说学费.复习知识,准备参加辅导班规定的考试. 第三步:当然就是付诸实践,

java面向对象编程— —第七章 继承

7.1继承的起源 继承(Inheritance),即在面向对象编程中,可以通过扩展(extends)一个已有的类,并继承该类的属性的行为,来创建一个新的类. 已有的类称为父类(也可以称为基类,超类),而新类称为子类(也可以称为派生类). 继承的优点:代码的可重用性:父类的属性和方法可用于子类:子类可以扩展父类的属性和方法:设计应用程序变得更加简单. 7.2 继承的使用原则 观察要使用的类,确定它们之间共同的和特有的属性和行为,将这些共性数据迁移到父类里,便于子类中进行方法和属性的重用. 对于不同