1. 重载:
同一个类中的多个方法名字相同,参数类型或者参数个数不同。调用方法是根据参数的个数和类型决定执行那个方法。
不同的返回值类型不能判读是否重载。
2. 重写:
子类和父类之间,如果子类方法的名字,参数类型和个数,返回值相同,则说明该子类重写了父类的方法。
父类的final方法不能重写
3. 重载和重写是java多态的一种表现形式。
4. 类实例的引用就是指向一个句柄(handle)的指针,这个句柄是一对指针:
一个指针指向一张表格,实际上这个表格也有两个指针(一个指针指向一个包含了对象的方法表,另外一个指向类对象,表明该对象所属的类型);
另一个指针指向一块从java堆中为分配出来内存空间。
5. Java中除了static和final方法外,其他所有的方法都是运行时绑定的。private方法都被隐式指定为final的(这样说我也没有依据),因此final的方法不会在运行时绑定。当在派生类中重写基类中static、final、或private方法时,实质上是创建了一个新的方法。
6. 构造方法是被隐式声明为static方法(对不对)。
父类:
public class Test12 {
Test12(){
System.out.println("父类的构造()方法======");
}
public void test1() {
System.out.println("父类的test1()方法======");
}
public void test2() {
System.out.println("父类的test2()方法======");
}
public static void test3() {
System.out.println("父类静态的test3()方法======");
}
private void test4() {
System.out.println("父类私有的test4()方法======");
}
public final void test5() {
System.out.println("父类fianl方法的test5()方法======");
}
}
子类:
public class Test13 extends Test12 {
public void test1() {
System.out.println("子类的test1()方法======");
}
public void test2() {
System.out.println("子类的test2()方法======");
}
public static void test3() {
System.out.println("子类静态的test3()方法======");
}
private void test4() {
System.out.println("子类私有的test4()方法======");
}
private void test6() {
System.out.println("子类私有的test6()方法======");
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Test12 t12 = new Test13();
// 根据对象t12对象引用的实际对象类型来调用对应的方法。
t12.test1();
t12.test2();
// 当子类类中重写基类中static、final、或private方法时,实质上是创建了一个新的方法。
t12.test3();
//t12.test6(); 虽然子类定义了test6()方法,但是父类并没有定义,一个类型引用只能引用引用类型自身含有的方法和变量。
//t12.test4(); 编译会报错的,test4()方法在类Test12中定义私有的,这里是无法调用到的
Test13 t13 = new Test13();
t13.test1();
t13.test2();
t13.test3();
t13.test4();
t13.test5();
// Test13 t14 = (Test13) new Test12(); 不能把父类对象引用赋给子类对象引用变量
// java.lang.ClassCastException: Test12 cannot be cast to Test13
}
}
执行结构:
父类的构造()方法======
子类的test1()方法======
子类的test1()方法======
子类的test2()方法======
父类静态的test3()方法======
父类的构造()方法======
子类的test1()方法======
子类的test1()方法======
子类的test2()方法======
子类静态的test3()方法======
子类私有的test4()方法======
父类fianl方法的test5()方法======
分享到:
相关推荐
在本文中,我们将对 Java 面试题进行总结和分析,帮助读者快速掌握 Java 面试题的知识点。 一、 Java 基础知识 1. 面向对象的三个基本特征:封装、继承、多态 封装是把客观事物封装成抽象的类,并且类可以把自己的...
Java面试宝典2013最新版汇集了Java编程语言面试中的常见知识点,这些知识点对于程序员在面试中表现优秀,获得心仪的工作机会至关重要。以下是对该宝典中涉及的知识点的详细解读: 1. Java基础知识点,包括了类与...
什么是 Java 中的重载(overloading)和重写(overriding)?它们有什么区别? **答案解析:** - **重载(Overloading)**:在同一类中,允许存在多个同名方法,但它们的参数列表必须有所不同。这有助于实现更...
Java面试宝典包含了Java基础、面向对象、异常处理、多线程以及集合框架等多个方面的问题和解答,是求职者准备Java面试时的重要参考。以下是根据文档内容归纳的知识点: 1. Java基础部分: - Java源文件中可以包括多...
这些知识点涵盖了Java开发的基本技能和高级特性,深入理解和熟练应用这些知识点对于在Java面试中脱颖而出至关重要。准备面试时,不仅要掌握理论知识,还要通过编写代码和实际项目经验来提高解决问题的能力。
1. **Java中实现多态的机制**:Java通过方法的重写(Overriding)和重载(Overloading)实现多态性。重写是子类对父类方法的重新定义,使得子类对象可以拥有与父类不同的行为;重载则是同一个类中多个同名但参数列表...
多态有两种主要形式:方法重载(Overloading)和方法重写(Overriding)。 2. **JavaBean规范**: - JavaBean是符合特定规范的Java类,主要用于数据存储和交换。规范包括:放在一个包中,属性为私有,提供无参构造...
Java面试题集锦涵盖了广泛的Java基础知识,JSP与Servlet技术,J2EE相关知识以及其他一些IT领域的要点。以下是对这些知识点的详细说明: 1. **Java基础** - Java有八种基本数据类型:byte, short, int, long, float...
【Java面试核心知识点详解】 1. **Java内存管理与生命周期** Java内存主要分为栈内存、堆内存和方法区。栈内存主要存储方法中的局部变量、常量和对象引用,随方法调用结束而销毁。堆内存用于存放所有类的实例对象...
### Java面试必备知识点详解 #### 一、Java虚拟机与平台无关性 **知识点1:Java虚拟机(JVM)** - **定义**:Java虚拟机(JVM)是一种能够执行Java字节码的虚拟机进程。Java源代码经过编译后会变成JVM能够识别并...
Java中的多态性包括方法重载(overloading)和方法覆盖(overriding)。 2. **基础类型与封装类**: - **基本类型**:如int、char、float等,它们在内存中直接存储值,效率高但无法执行对象特有的方法。 - **封装...
### Java面试常见120题知识点详解 #### 1. Java虚拟机的理解 - **概念**:Java虚拟机(JVM)...以上是对给定文档中的部分知识点的详细解释,这些知识点涵盖了Java基础的核心概念,对于理解和准备Java面试非常有帮助。
Java中的多态性体现在方法重载(overloading)和方法覆盖(overriding)。 2. **基本数据类型与引用类型的区别** - 基本数据类型如`int`是直接存储在栈中的,而引用类型如`Integer`存储的是对象在堆中的引用。 - ...
### Java面试题汇总知识点 #### 1. Java序列化 - **定义**:Java序列化是一种将对象状态转换成字节流的过程,以便于存储或网络传输。它使得对象能够跨进程、跨机器进行传递。 - **实现方式**:一个类如果想要实现...