大部分内容都是摘自《Thinking in Java》。
多态是继数据抽象和继承之后的第三种基本特征。多态方法调用允许一种类型表现出与其他相似类型之间之间的区别,只要他们都是从同一个基类导出而来的。这种区别是根据方法行为的不同而表示出来的。
1、动态绑定机制:将一个方法调用同一个方法主体关联起来被称作绑定,在程序执行前进行绑定称为前期绑定,在运行时根据对象的类型进行绑定称为动态绑定或运行时绑定。
向上转型:我们定义一个方法,接收基类作为参数,当我们向该方法传递导出类参数时,方法会自动的根据对象类型调用导出类的行为。
2、在导出类中除了重写基类的方法,还可以定义自己的方法和域。这种称为扩展,经过扩展之后使得导出类和基类之间有一种"is-like-a"的关系。
3、多态的缺点:
(1)缺点:“覆盖”私有方法,只有非private方法才可以被覆盖。在导出类中,对于基类的private方法,最好采用不同的名字。
(2)缺点:域与静态方法,任何域访问操作都将由编译器解析,因此不是多态的。又,如果某个方法是静态的,他的行为就不具有多态性,静态方法是与类,而不是单个的对象相关联的。
3、复杂最想调用构造器的顺序:
(1)在其他任何事物发生之前,将分配给对象的存贮空间初始化为二进制的零;
(2)调用基类构造器;
(3)按照声明的顺序调用成员的初始化方法;
(4)调用导出类的构造器主体。
接口和内部类为我们提供了一种将接口和实现分离的更加结构化的方法。
1、抽象方法:方法只有声明,没有方法体。包含抽象方法的类称为抽象类。
abstract void f();
2、接口(interface):提供一个完全抽象的类,只是提供了形式而未提供任何具体实现。
类继承接口使用关键字implements关键字。接口中的方法必须被定义为public。接口中的任何域都自动化是static和final的,
3、类可以继承多个接口,从而实现多重继承。实现接口的类同样可以向上转型为接口。
4、接口可以嵌套在类或其他接口中。
可以将一个类的定义放在另一个类的内部,这就是内部类。
1、当生成一个内部类对象时,此对象与制造它的外部对象之间就有了一种联系。内部类可以访问其外围的类的方法和字段。
2、内部类使用外围类对象的引用,通过外部类.this实现。
必须使用外部类的对象来创建该内部类的对象。
OutClass oc = new OutClass();
OutClass.InnerClass ic=oc.new InnerClass();
3、局部内部类:在方法的作用域内创建一个完整的类;
4、匿名内部类:匿名类是不能有名称的类,所以没办法引用它们。必须在创建时,作为new语句的一部分来声明它们。
public class Main {
public static void main(String[] args) {
InnerTest inner = new InnerTest();
Test t = inner.get(3);
System.out.println(t.getI());
}
}
class Test { //超类
private int i;
public Test(int i) {
this.i = i;
}
public int getI() {
return i;
}
}
class InnerTest { //用于内部类的测试
public Test get(int x) {
return new Test(x) { //创建匿名内部类,调用父类的构造方法
@Override
public int getI() {
return super.getI() * 10;
}
};
}
}
5、嵌套内部类:如果不需要内部类对象和外围类之间有联系,可以将内部类声明为static。这通常称为嵌套类。嵌套类可以作为外围接口的一部分,甚至可以在内部类中实现其外围接口。
分享到:
相关推荐
java对象的引用,控制程序流,初始化和清除,封装,复用类,多态,接口和内部类,异常处理try——catch,类的检查,对象的集合,i/o系统,并发,分析与设计,对象的传递和返回
1、实验题目:多态和接口编程 2、实验目的:掌握重载、覆盖的多态Java编程,理解类的继承和接口实现的内涵,掌握向上转型的编程技术。
内含Java基础多态知识点笔记,及部分对应练习题。
内容为本人学习java多态封装时整理的基础知识笔记,内容包括java中的多态和封装
零点起飞学C之灵活的代码——多态PPT学习教案.pptx
LabVIEW编程的实用技巧系列第2讲——多态VI的创建.avi
1、实验名称:类的继承、多态的应用 2、代码内容:学生管理类 3、【实验目的】 (1)进一步熟悉抽象类和抽象方法的定义 (2) 进一步掌握集成和多态的实现方式。
java 笔记, 讲解多态 面向对象
多态和接口学习笔记 https://blog.csdn.net/zhongxiayue/article/details/88967550
Java实验报告
实现重载(overload)和重写(override) 调用中用到多态,向上转换,强制转换 所有被创建的类,都各自创建两个实现接口 最底层的类中创建内部类,并在外部类中调用内部类的方法
Java学习笔记(到多态部分)
Java语言程序设计:JAVA_6-接口与多态、内部类.ppt
java封装 继承与多态 程序设计 类与对象
Java——多态 多态的特性 1.可替换性(substitutability)。多态对已存在代码具有可替换性。 例如,多态对圆Circle类工作,对其他任何圆形几何体,如圆环, 也同样工作。 2.可扩充性(extensibility)。多态对代码...
java的编译时多态和运行时多态,保证一看就会
java 实验 继承与多态rectAngle 定义矩形类,用户输入矩形的长与宽,程序计算其面积和周长;派生子类正方形类,定义一个接口Printable源代码
抽象类多态接口相关资料
Java 语言程序设计:第5章接口多态.ppt