我们在编程过程中经常使用代码复用,其中主要有两种方式:组合与继承。
组合:即在编程中直接将某个类引入到新类中作为新类的field。
继承:子类继承了父类,就会自动获取到父类的field和方法(public和protected等)。
在学习的过程中发现了以下一个以前不曾注意的点:
①一个程序中含有多个类,每个类都可以具有自己的main方法,其他的类也可以相互调用main方法,看作普通的静态方法即可,而且更加方便进行测试。
②子类调用父类构造方法是,必须放在子类构造方法的起始位置。
③静态方法中不能使用非静态的成员变量或者方法。
这是由于使用static标注的field或者方法,表示其属于这个类,而非类的实例,而非静态的成员变量从属于类的实例,这样如果可以使用话,静态的方法并不会知道这些变量为哪个实例的变量,必然会出错。而且在静态方法中也不能使用 this 和 super。
④在子类重写父类方法时使用@Override标注该方法,可以防止误操为对父类方法的重载。
⑤组合与继承如何选择?
最简单的方法就是如果关系为"is-a"使用继承,"has-a"使用组合。
另一个判断的依据为:我们需不需要从子类向父类进行向上转型操作,如果必须向上转型则使用继承,否则不必使用。
⑥继承中类的初始化顺序
public class Beetle extends Insect { private int k = printInit("Beetle.k initialized"); private String z; public Beetle(int k, String z){ this.z = z; this.k = k; System.out.println("j = " + j); System.out.println(z); } private static int x2 = printInit("staitc Beetle.x2 initialized"); public static void main(String[] args) { System.out.println("Beetle constructor"); Beetle b = new Beetle(3,"Beetle.z"); } } class Insect{ private int i =9; protected int j; public Insect() { System.out.println("i = " + i + ", j = " + j); j = 39; } private static int x1 = printInit("static Insect.x initialized"); static int printInit(String s){ System.out.println(s); return 47; } }
输出:
static Insect.x initialized
staitc Beetle.x2 initialized
Beetle constructor
i = 9, j = 0
Beetle.k initialized
j = 39
Beetle.z
java程序开始试图访问main方法,开始加载Beetle的编译代码,发现存在父类后,对父类进行加载,初始化(最先初始化static 的field)。然后对Beetle类建立对象
可以看出初始顺序:先对field进行初始化而后在执行构造方法。
⑦关于基类与子类
继承并不只是复制了基类的接口,当我们创建一个子类的对象时,该对象包含了一个基类的子对象(我想是super),这个子对象与直接使用基类创建的对象时一样的,只不过基类的子对象被包装在子类对象内部。
相关推荐
同时,通过继承(extends)可以实现代码复用,让类与类之间形成层次结构;多态(polymorphism)则允许我们设计更具灵活性的代码,通过接口或抽象类实现。 其次,了解基本数据类型和控制结构至关重要。Java有八种...
本资料包"Java 入门 基础 代码"提供了100个小型Java编程实例,旨在帮助初学者逐步理解并熟练运用Java的基本语法和概念。 首先,Java的基础入门通常包括以下几个方面: 1. **环境搭建**:学习Java的第一步是安装...
Java基础源代码是学习编程语言Java的起点,尤其适合初学者。Java作为一种广泛使用的面向对象的编程语言,具有跨平台、高性能、安全性和稳定性的特点。在这个“java基础的源代码”中,我们可以期待找到一系列关于Java...
【Java基础源码详解】 ...毕向东老师的Java基础源码课程覆盖了这些核心知识点,并通过实际的代码示例帮助学习者更好地理解和应用。通过学习这些源码,你可以加深对Java语言的理解,为后续的进阶学习打下坚实的基础。
【Java基础源代码day03】是传智播客Java培训课程中毕向东老师讲解的一天教学内容,主要涵盖了Java编程语言的基础知识点。在这一天的学习中,学生将深入理解Java的核心概念,为后续的Java开发打下坚实的基础。以下是...
"Java基础 全套源代码"提供了学习Java编程的基础资源,包括毕向东老师的视频讲义配套源码,这对于初学者或者想要巩固Java基础知识的开发者来说是一份宝贵的资料。 在Java学习的初期,理解基础概念至关重要。这包括...
这份"java基础题目代码"压缩包提供了适合初学者实践的编程题目,帮助他们巩固和理解Java的基本概念。下面,我们将详细讨论这些知识点。 1. **变量与数据类型**:Java中的数据类型分为两大类——基本类型和引用类型...
Java基础教程源代码是学习Java编程语言的重要参考资料,它涵盖了Java的基本操作,旨在帮助初学者理解和掌握编程概念。在这个教程中,你可以通过实际的代码示例来了解和实践各种Java编程技术。以下是一些关键的知识点...
【Java基础源代码与课件解析】 在"张孝祥java基础源代码和课件"这个资源中,我们可以深入学习Java编程的基础知识。Java是一种广泛使用的面向对象的编程语言,以其跨平台、安全性高和可移植性强等特点,在软件开发...
在本资源"传智播客_Java培训_毕向东_Java基础源代码_day02"中,我们聚焦于Java编程语言的基础学习,由知名讲师毕向东指导。这个压缩包包含了day02的学习材料,主要是源代码,是为初学者精心准备的实践教程。 Java是...
在《Java基础入门》_源代码的压缩包中,我们可以期待找到一系列的示例代码,这些代码将涵盖以下关键知识点: 1. **环境配置**:首先,你需要安装Java Development Kit (JDK)并设置好环境变量,以便在计算机上编译和...
这份“java基础代码知识”资料是为初学者准备的,旨在帮助他们掌握Java编程的基础概念和技能,从而成为一名合格的初级Java程序员。我们将从以下几个方面探讨Java的核心知识点: 1. **Java语法基础**: - **变量与...
通过定义类并创建其对象,可以实现代码的封装和复用。 5. **数组**:数组是相同类型元素的集合,可以在一个变量中存储多个值。Java中的数组可以通过索引来访问元素,索引从0开始。例如,`int[] numbers = new int[5...
4. **继承**:继承允许一个类(子类)继承另一个类(父类)的属性和方法,从而实现代码复用。Java只支持单继承,但可以通过接口实现多重继承的效果。 5. **多态**:多态是指同一种行为可以有不同的表现形式,比如...
本文将深入探讨“JAVA基础的代码实例”,包括基础语法、面向对象编程以及异常处理,这些都是初学者必须掌握的核心概念。 首先,我们来看Java的基础语法。Java的语法与C++和C#有许多相似之处,但更注重简洁和安全性...
一、Java基础知识 Java是一种面向对象的编程语言,由Sun Microsystems(现属Oracle公司)于1995年发布。其特点是平台独立性,通过“一次编写,到处运行”的理念,实现了跨平台的应用开发。Java的核心概念包括类、...
关于提高Java代码可重用性的三个措施,本文将深入探讨并详细解释这些策略,帮助开发者在实际项目中更好地实现代码的复用。 ### 第一措施:优化类的设计 #### 设计模式的应用 设计模式是软件工程领域的重要概念,...
这个名为"JAVA代码_java基础代码_"的压缩包显然包含了适合初级学习者的基础Java代码示例,是自学者很好的参考资料。让我们深入了解一下Java编程的基础知识。 1. **变量与数据类型**: Java有八种基本数据类型,...
《Java基础入门》_源代码.zip是一个包含Java编程初学者入门教程的源代码集合。这个压缩包很可能是为了辅助学习者理解并实践Java语言的基本概念和技术。以下将详细阐述Java基础的一些关键知识点。 1. **Java简介**:...