接口--多态

1.写出定义接口的格式

interface A{
     public abstract void work();

}

注:

(1)接口的权限修饰符如果不标明,默认为default,仅可在本包中访问;

(2)接口中的方法必须为抽象方法,且public abstract可以不写,默认为public abstract.实际开发中通常写为 public void work();

(3)接口的子类叫做实现类,命名方式一般为:接口名+Impl,如InterfaceImpl;

(4)java8中有新特性,可实现类方法(static修饰,可由接口名直接调用)和默认方法(default修饰,由实现类的实例化对象调用);

2.写出实现接口的格式

实现接口的类称为实现类,格式如下:

//定义接口

interface A{
     public void work();

}

//定义实现类

class B implements A{
     public void work(){
         System.out.println("实现类");
     }

}

3.说出接口中成员的特点

接口由全局常量和抽象方法构成.全局常量由public static final修饰.如:

interface A{
     public static final String str = "abc";
     public void work();

}

4.接口和抽象类的区别

区别:

1)是否提供实现方法:抽象类为部分方法提供实现,避免子类重复实现这些方法,提高代码复用性;接口只能包含抽象方法(java7及以前);

2)继承与实现:接口可以同时继承多个接口;一个类只能继承一个直接父类(可以为抽象类),却可以实现多个接口(弥补了单继承的局限);

3)共性与扩展:抽象类为继承体系中的共性内容,接口为继承体系中的扩展功能.

相同:

1)顶端:都位于继承的顶端,用于被其他类实现或继承;

2)实例化对象:都不能直接实例化对象;

3)抽象方法:都可以包含抽象方法,其子类必须覆写这些抽象方法

选用:

1)优先用接口,少用抽象类

2)需要定义子类的行为,又要为子类提供共性功能时才选用抽象类

5.能够说出使用多态的前提条件

有继承(extends)关系或实现(implements)关系

6.理解多态的转型

举例:父类Person  子类Student

Person p = new Student();    //向上转型(自动转换),转换完成后p可访问父类的成员变量,调用子类覆写的成员方法,但不能调用子类特有的成员方法

Student stu = (Student) p;    //向下转型,stu可访问子类中的成员变量,可调用父类方法(继承)和子类中的所有方法

7.理解多态

java引用变量有两个类型:一是编译时类型,一是运行时类型。编译时类型由声明该变量时使用的类型决定;运行时类型由实际引用的对象决定。如果编译时类型与运行时类型不一致,就可能出现多态(Polymorphism)。方法的重载/覆写,实例化对象的转型等都属于多态的范畴。

时间: 2024-08-07 19:14:49

接口--多态的相关文章

面向对象(接口 ,多态)

接口 (1)当抽象类中的方法都是抽象的时候,java就提供了一种新的表现形式:接口 ,接口是功能的集合 接口不能创建对象 (2)格式 父接口:public interface Tnter{ } 子类:public class interImp implements Itner{ } 接口的使用 1.接口不能创建对象 2.定义实现类来实现接口 实现的关键字 implements 3.重写抽象方法 4.创建实现类对象 调用方法 接口的特点 1.不需要被abstract 修饰 2.类实现接口,可以单实

我的学习之路_第二章_接口/多态

接口 (1)当抽象类中的方法都是抽象的时候,java就提供了一种新的表现形式:接口.接口是功能的集合 接口不能创建对象 (2)格式: 父接口: public interface Inter { } 子类: public class InterImpl implements Inter { } (3)接口的特点: A:不需要被abstract修饰. B:类实现接口,可以单实现,还可以多实现. C:接口可以继承接口,可以单继承,也可以多继承. D:接口与父类的功能可以重复,均代表要具备某种功能. (

抽象类 接口 多态

一 抽象类(abstract) 抽象类的概念只抽取了很多类的方法的声明,方法声明用abstract修饰.一个类如果有抽象方法,那么这个类必须是抽象类.抽象类里边可以没有抽象方法,如果这么做只有一个目的:不让你创建这个类的对象.抽象类不能被实例化,不能创建对象.如果一个类继承抽象类,那么,它要么重写抽象类中的所有抽象方法,要么本身也是抽象类. 抽象类的成员成员变量:可以是常量,也可以是变量.子类可以直接继承抽象类中的成员变量.成员方法:可以是抽象的,也可以是非抽象的.抽象方法在子类中必须要被实现.

instanceof 操作符 接口 多态

instanceof 操作符result =  对象名称 instanceof 类型 参数:result:布尔类型. 对象名称:必选项,任意对象表达式. 类型:必选项,任意已定义的类,可以是api中的类,也可以说自定义的类. 说明:如果对象是这个类型的实例,则instanceof运算符返回true.如果对象不是指定类的一个实例,或者对象是null,则返回false Object类Object类是所有类的父类object类的作用object类中的方法 接口 是特殊的抽象类即所有方法都是抽象方法的类

接口多态实现窗体传递

public interface IFillAreas { void FillAreas(string ids, string names); //接口中定义方法签名 } public partial class FrmPerson : Form,interfaces.IFillAreas //窗体继承于接 private void btnChoice_Click(object sender, EventArgs e) { FrmAreas frm = new FrmAreas((interfa

day24 继承 接口 多态

抽象类与接口类 接口类 继承有两种用途: 一:继承基类的方法,并且做出自己的改变或者扩展(代码重用) 二:声明某个子类兼容于某基类,定义一个接口类Interface,接口类中定义了一些接口名(就是函数名)且并未实现接口的功能,子类继承接口类,并且实现接口中的功能 class Alipay: ''' 支付宝支付 ''' def pay(self,money): print('支付宝支付了%s元'%money) class Applepay: ''' apple pay支付 ''' def pay(

Java复习_4 接口多态和内部类

△abstract不可以修饰成员变量 △一个类可以没有抽象方法,可以定义为抽象类,这样的目的是不能让其他类建立本类对象,交给子类完成. △abstract和static(可以被类名调用方法,但是抽象方法调用没有意义)final(不能被覆盖方法)private(私有方法无法覆盖) △接口只能被实现.被用接口去继承或者用类或者抽象类去实现 △接口中定义的变量全部是常量.关键修饰符为Public static final.接口中没有构造方法,实现接口的类构造方法访问的是object,接口中的方法是Pu

设计模式-接口多态

<?php//飞行接口interface Flyable { function fly($obj);}//飞行接口类的具体实现class Action implements Flyable{ function fly($obj){ if($obj instanceof Aduck){ echo 'Aduck is flying<br/>'; }else if($obj instanceof Bduck){ echo 'Bduck is flying<br/>'; }else{

JAVA笔记6__抽象类/接口/多态/instanceof关键字、父类设计法则

/** * 抽象类:很多具有相同特征和行为的类可以抽象为一个抽象类 * 1.抽象类可以没有抽象方法,有抽象方法的类必须是抽象类 * 2.非抽象类继承抽象类必须实现抽象方法[可以是空实现] * 3.抽象类可以有方法和属性 * 4.抽象类不能被实例化 * 5.抽象类不能声明为final * 6.抽象类可以有构造方法[不代表实例化对象] */ public class Main { public static void main(String[] args) { Goddess m1 = new Go