初学java应该注意的问题
Java代码:
1.public abstract class A {
2. int i=1;
3. public void printI() {
4. System.out.println("i="+i);
5. }
6.}
7.
8.public class B extneds A{
9. int i=2;
10. public static void main(String[] args) {
11. B b=new B();
12. b.printI();
13. }
14.}
那么,控制台打出来的i的值是多少?
呵呵,如果一下功夫就能说出正确结果1,那么,下面部分就不需要往下看了。
1、类的继承知识点
(1)java不支持多重继承,也就是说子类至多只能有一个父类
(2)子类继承了其父类中不是私有的成员变量和成员方法,作为自己的成员变量和方法
(3)子类中定义的成员变量和父类中定义的成员变量相同时,则父类中的成员变量不能被继承
(4)子类中定义的成员方法,并且这个成员方法的名字,返回类型,及参数个数和类型与父类的某个成员方法完全相同,则父类的成员方法不能被继承。
2、答案是2者如是说
子类B中的变量i和父类A中的变量i重名, 那么子类B中的变量i将会覆盖掉父类中的同名变量i. 则访问父类中的变量时jvm会把子类cast到父类.所以,打印出的结果应该是“i=2”;
3、歧义的产生
歧义的产生最关键的地方是子类B中的变量i将会覆盖掉父类中的同名变量i的覆盖两个字。这里,我觉得这两个字容易误导。应该改为屏蔽或隐藏。因为在这里父类的成员变量是没有被改变。
4、jvm的执行过程
(1)子类B 的构造方法被调用,实例化一个B对象,B对象的成员被初始化
(2)jvm隐含的调用父类的构造方法,实例化一个A对象,A对象的成员被初始化。
(3)由于A对象的printI()未被屏蔽,所以调用的A对象的printI()函数。
那么,在这里A的成员函数当然是访问自己的成员变量了。
5、super关键字
super关键字在java中的作用是使被屏蔽的成员变量或者成员方法或变为可见,或者说用来引用被屏蔽的成员变量和成员成员方法。super是用在子类中,目的是访问直接父类中被屏蔽的成员。上面的代码也可以这样写:
1.public abstract class A {
2. int i=1;
3. public void printI() {
4. System.out.println("i="+i);
5. }
6.}
7.public class B extends A{
8. public int i=2;
9. public void printI(){
10. super.printI();
11. }
12. public static void main(String[] args){
13. B b= new B();
14. b.printI();
15.
16. }
17.}
分享到:
相关推荐
Java编程技巧典型案例解析 在Java编程领域,掌握高效、实用的编程技巧对于提升代码质量、优化性能以及提高开发效率至关重要。本资料集旨在通过一系列典型示例,深入剖析Java编程中的常见问题及其解决策略,帮助...
这个"100个JAVA编程的典型例子"集合为初学者提供了一条深入理解Java语言特性和常用算法的宝贵途径。 首先,Java语言基础是所有例子的核心,包括变量声明、数据类型、流程控制(如if-else语句、for循环、while循环)...
"Java典型案例"这个主题涵盖了各种基础到高级的JAVA程序设计概念和技术。这些小程序通常用于教学目的,帮助开发者理解和掌握Java的核心特性。 在描述中提到的"典型的JAVA小程序"可能包括了以下内容: 1. **Hello, ...
1. **面向对象编程(OOP)**:Java是一种面向对象的语言,因此在源码中,你会看到类(Class)、对象(Object)、封装(Encapsulation)、继承(Inheritance)和多态(Polymorphism)等概念的实现。学习如何定义和...
在`threadTest`这个案例中,我们可能会看到如何使用这些概念来创建实际的应用场景。例如,一个典型的例子可能是银行转账,两个线程分别代表不同的账户,它们都需要访问账户余额这一共享资源。在转账过程中,需要先...
在这个贷款利率计算的例子中,我们可能会看到一个自定义的Applet类,继承自其中之一,并覆盖必要的方法,如`init()`, `start()`, `paint()`等。 2. **生命周期方法**: - `init()`: 这个方法在Applet加载时被调用...
在Java编程语言的学习过程中,实践是非常重要的一部分。"JAVA实验典型举例"这个资源提供了一系列的Java实例,旨在帮助学习者深入理解和应用Java的核心概念。通过分析这些代码,我们可以强化理论知识,提高解决问题的...
以下将详细解析"Java十大经典案例"中的关键知识点: 1. **银行账户管理系统**:这个案例涉及到面向对象设计,包括类、对象、封装、继承和多态等概念。它通过模拟银行账户的存款、取款、转账等操作,展示了Java在...
在这个项目中,我们通过让Applet继承自Thread类来实现音乐播放的功能,这是一种典型的多线程编程的应用。 在Java中,线程是程序执行的最小单元,每个线程都有自己的生命周期,包括创建、就绪、运行、阻塞和终止五个...
《Java典型模块与项目实战大全》是一本专为Java开发者设计的实践指南,涵盖了大量Java编程中的关键模块和实际项目案例。这本书的核心价值在于通过实际的项目经验来传授Java技术,帮助读者提升从理论到实践的转化能力...
这份"Java案例开发大全源程序"包含了377个典型实例和1个综合案例,覆盖了从基础到高级的各种Java编程技术。下面我们将逐一探讨这些知识点。 首先,从"1-15章"的章节分布来看,这很可能是一个系统的Java教程,涵盖了...
下面我们将详细探讨Java初学者在220个实例中可能会遇到的知识点。 1. **基础语法**:包括变量声明、数据类型(如整型、浮点型、字符型、布尔型)、运算符(算术、比较、逻辑、位操作等)、流程控制(如if-else、...
在这个案例中,`Car`类是一个销售汽车的类,它有一个`sellCar(Carr car)`方法,该方法接收一个实现了`Carr`接口的对象,打印出汽车的型号和价格,并将价格累加到`money`字段中。`getMoney()`方法返回总收入。 ```...
"Java典型应用彻查1000例第一卷:Java入门(源码+PPT+习题).rar"这个资源包是为初学者提供的一套全面的Java学习资料,包含源码、教学PPT以及习题,旨在帮助学习者快速掌握Java的基础知识。 1. **源码**: - Java...
1. **Java基础知识**:在这些案例中,你会看到Java的基础语法应用,包括数据类型、变量、运算符、控制结构(如if-else、switch、循环)、类与对象、封装、继承、多态等核心概念。通过实际操作,有助于巩固理论知识。...
【Java嗖嗖移动业务大厅项目案例】是一个典型的Java应用程序,主要关注的是移动业务处理和管理。这个项目案例可能涵盖了多种核心Java技术,如面向对象编程、数据处理、网络通信等,下面将对这些知识点进行详细解析。...
Java语言是面向对象编程的典型代表,它提供了丰富的类库支持,包括基础数据类型、集合框架、多线程、网络编程等。在这个资源包中,源码部分可能包含了这些核心概念的实例,比如创建类、对象,定义属性和方法,以及...
这个压缩包包含的是一整套书籍的源程序,为学习者提供了丰富的实践案例,涵盖了Java开发中的各种关键知识点。 首先,Java作为一门面向对象的编程语言,其基础语法是学习的重点。这包括类、对象的创建与使用,封装、...
3. **异常处理**:Java的异常处理机制是其强大之处,案例中可能会包含try-catch-finally结构,以及自定义异常的创建和抛出,帮助读者理解如何处理程序运行时可能出现的问题。 4. **集合框架**:Java集合框架包括...