JAVA面向对象的多态性及抽象类和接口

一:Object类
Object类是所有Java类的根基类(“祖先类”)
如果在类的声明中未使用extends关键字指明其基类,则默认基类为Object类
1.toString()方法

Object类中定义有public String toString()方法,其返回值是String类型,描述当前对象的有关信息。

如果直接打印某对象的引用,则默认会调用这个对象的toString()方法,默认打印的内容中包含这个引用所指向的内存地址。
可以根据需要在用户自定义类中重写toString()方法。
2.equals()方法

Object类中定义有public boolean equals(Object obj) 方法,提供定义对象是否“相等”的逻辑。

Object的equals方法定义为:x.equals(y),当x和y指向同一个地址时返回true,否则返回false。

String类中已经重写了equals(Object obj)方法,重写后的方法比较的是两个字符串的”内容”是否一样(注意:==比较对象的引用)。

可以根据需要在用户自定义类型中重写equals方法。

二:多态性

封装是为了保护属性的一种操作,继承是为了扩展类的功能

是由封装性和继承性引出的面向对象程序设计语言的另一特征。

从方法的角度来看:
方法的重载与重写

重载(overloading):根据传入的参数不同,完成的功能也不同

重写(override):子类根据需求重写父类中的方法。

instanceof关键字

在java中可以使用instanceof关键字判断一个对象是否属于一个类的实例

格式:
对象 instanceof 类 ?返回boolean类型

final关键字

在JAVA中声明类、属性和方法时,可以使用关键字final来修饰。
注意:

1.final修饰变量(成员变量或局部变量),则成为常量,只能赋值一次

final  类型  variableName;

修饰成员变量时,定义时同时给出初始值,而修饰局部变量时不做要求。

2.final修饰方法,则该方法不能被子类重写
final 返回值类型 methodName(paramList)
{

}

3.final修饰类,则类不能被继承
final class finalClassName{

}

三:抽象类与接口

用abstract修饰的类即为抽象类
abstract class 抽象类名{
}

抽象类不能被实例化,必须被继承,抽象方法必须被重写,生成它的子类。
由abstract修饰的方法就是抽象方法,抽象方法没有方法体。

抽象类不一定要包含抽象方法,若类中包含了抽象方法,则该类必须被定义为抽象类。

如果一个子类没有实现抽象父类中所有的抽象方法,则子类也成为一个抽象类。

构造方法、静态方法、私有方法、final方法不能被声明为抽象的方法。
接口

接口(interface)是抽象方法和常量值的定义的集合。

接口是一种“标准”、“契约”。

从本质上讲,接口是一种特殊的抽象类,这种抽象类中只能包含常量和方法的定义,而没有变量和方法的实现。

接口的声明语法

包括接口声明和接口体

完整的接口声明:

[public] interface 接口名称[extends listOfSuperInterface]
{ … }

接口体包括常量定义和方法定义

常量定义: type NAME=value;  该常量被实现该接口的多个类共享; 具有public ,final, static的属性.

方法体定义:具有 public和abstract属性

接口的实现类

与抽象类一样,接口要使用也必须通过子类,子类通过implements关键字实现接口

一个类可以实现多个接口,在implements子句中用逗号分开

非抽象子类必须实现接口中定义的所有方法

实现格式:
class 子类 implements接口A,接口B…{
}

接口的使用规则:

接口中所有的方法都是public abstract。
在接口中声明方法时,不能使用static,final,synchronized,private,protected等修饰符。
一个接口可以继承自另一个接口。
java中不允许类的多继承,但允许接口的多继承。

接口中可以有数据成员,这些成员默认都是public static final
接口的用途:

(1)通过接口实现不相关类的相同行为,而无需考虑这些类之间的关系.
(2)通过接口指明多个类需要实现的方法
(3)通过接口了解对象的交互界面,而无需了解对象所对应的类

原文地址:http://blog.51cto.com/13507330/2093804

时间: 2024-10-11 06:52:23

JAVA面向对象的多态性及抽象类和接口的相关文章

Java面向对象学习笔记 -- 5(抽象类、接口)

1. 抽象类 抽象就是将拥有共同方法和属性的对象提取出来,提取后,重新设计一个更加通用.更加大众化的类,就叫抽象类. 1)抽象方法:由abstract修饰,只有方法的定义,没有方法的实现: 2)包含抽象方法的类必须是抽象类: 3)抽象类:由abstract修饰,不能被实例化,可以包含抽象方法和非抽象方法: 4)抽象类都是需要被继承的,子类继承后再实现以下操作: 4.1)子类中重写父类的抽象方法 4.2)子类也声明为抽象类 5)抽象类的意义: 5.1)封装子类共有的变量和方法--代码的重用 5.2

java面向对象基础(四):抽象类和接口

*/ .hljs { display: block; overflow-x: auto; padding: 0.5em; color: #333; background: #f8f8f8; } .hljs-comment, .hljs-template_comment, .diff .hljs-header, .hljs-javadoc { color: #998; font-style: italic; } .hljs-keyword, .css .rule .hljs-keyword, .h

java随笔:浅谈抽象类与接口

一.介绍. 接口和内部类为我们提供了一种讲接口与实现分离的更加结构化的方法. 没有足够信息描述的类我们可以称它为抽象类. 二.问题引入. 我们都知道门具有打开与关闭的功能,还有上锁等功能.门怎么打开与关闭是由设计师来决定的.这时我们可以设定一个抽象类. 1 abstract class door{ 2 abstract void open(); 3 abstract void close(); 4 } 假如此时我们给门加入报警的功能怎么办呢.当然我们不能在原有的door类中直接加入alarm的功

面向对象(高级篇之抽象类与接口的应用)

抽象类的实际应用-----模板设计 接口的实际应用--------制定标准 设计模式-------工厂设计 程序在接口和子类之间加入了一个过渡端,通过此过渡端取得接口的实例化对象. 设计模式-------代理设计 所谓的代理设计就是指由一个代理主题来操作真实主题,真实主题执行具体的业务操作,而代理主题负责其他相关业务的处理. 相当于我玩一个游戏需要登录游戏,在这个登录的时候可以设计两个类,一个是登录,另一个是检验你的用户名与密码,而登录是附着在检验类上的. 设计模式-------适配器设计 对于

黑马程序员(Java)----面向对象(多态、抽象类、接口)

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 3.7 多态 3.7.1.理解多态 多态可以理解为事物存在的多种体现形态.例如下面的代码: Cat c = new Cat(); Animal a = new Cat(); 建立一个猫的对象,可以用猫这个类引用,也可以用动物这个类引用. 3.7.2.多态的前提 1.类与类之间必须有关系,要么继承,要么实现. 2.存在覆盖.父类中有方法被子类重写(其实没有也是可以的,但是如果没有这个就没有意义)

Java入门(一)——类、抽象类和接口

Java是一门面向对象语言,可以看出"对象"在Java有着举足轻重的位置.那么,"对象"从何而来呢?那必须是丈母娘造出来的,下面我们就先来说说这个丈母娘--类. Java类 对象: 对象具有状态和行为. 例如:一只狗的状态有:颜色,名称,品种,它的行为有:摇尾巴,吠叫,吃东西. 对象是类的实例 类: 类是一个模板,它描述一类具有相同状态和行为的对象.比如人类,都具有思考这个行为,而植物没有. 类可以看成是创建Java对象的模板,下面简单定义一个类: public c

面向对象_多态_抽象类_接口

09.01_面向对象(多态的概述及其代码体现) A:多态(polymorphic)概述 事物存在的多种形态 B:多态前提 a:要有继承关系. b:要有方法重写. c:要有父类引用指向子类对象. C:案例演示 代码体现多态 public class Demo1_polymorphic { /** * 成员变量:编译时看左边(父类),运行时看左边(父类) * 成员方法:编译时看左边(父类),运行时看右边(子类) * @param args */ public static void main(Str

JAVA 特征以及基本类、抽象类、接口

Java是一个面向对象的语言,java面向对象一般有三大特征:封装.继承.多态. 封装:就是把一些属性和方法封装到一个类里. 继承:就如子类继承父类的一些属性和方法. 多态:就如一个父类有多个不同特色的子类. 这里我就不多讲解,下面我主要说明一个继承.继承是OOP(面向对象)的一个特色,java只支持天津网站制作公司单继承(如果继承两个有同样方法的父类,那么就不知道继承到那个父类的,所以java只支持单继承).继承是java的一个特色,我们用的所以类都继承Objict类,所以就要Object类的

JAVA基础(1)抽象类和接口

深入理解Java的接口和抽象类 对于面向对象编程来说,抽象是它的一大特征之一.在Java中,可以通过两种形式来体现OOP的抽象:接口和抽象类.这两者有太多相似的地方,又有太多不同的地方.很多人在初学的时候会以为它们可以随意互换使用,但是实际则不然.今天我们就一起来学习一下Java中的接口和抽象类.下面是本文的目录大纲: 一.抽象类 二.接口 三.抽象类和接口的区别 若有不正之处,请多多谅解并欢迎批评指正,不甚感激. 请尊重作者劳动成果,转载请标明原文链接: http://www.cnblogs.