`
hjj20040849
  • 浏览: 115160 次
  • 来自: 广州
社区版块
存档分类
最新评论

java继承中的一些 错误认识

    博客分类:
  • java
阅读更多

 

    关于继承,我想大多数人都知道,它是面向对象语言中的三大特性之一,所以在这里,关于继承的概念等我就不做详细介绍了,我主要就讲一下大家对他的认识中一些比较容易犯的错误吧。

    错误认识1、继承,是将父类中所有的属性和方法都继承下来。

    其实这个认识是错误的,继承,并不是将父类中所有的属性和方法都继承下来,而是只继承父类中公有的属性和方法,对于私有的(即是private)属性,我们可以通过对应的getter和setter方法来对其进行修改。对于私有的方法,我们可以通过其它公共的方法来对其进行调用。

下面是一个例子,大家可以运行来学习验证一下。

Person.java

 

package com.extendsStudy.model; 
 
public class Person { 
    private String private_name;    //私有的属性 
     
    public int public_age;      //公共属性 
 
    /** 
     * 私有属性private_name的getter方法 
     * @return 当前类中private_name的值 
     */ 
    public String getPrivate_name() { 
        System.out.println("调用了父类的getPrivate_name方法: " + this.private_name); 
        return private_name; 
    } 
     
    /** 
     * 私有属性private_name的setter方法 
     * @param private_name  记录中将要赋值给类中private_那么属性的变量 
     */ 
    public void setPrivate_name(String private_name) { 
        this.private_name = private_name; 
    } 
} 

 

 Boy.java

package com.extendsStudy.model; 
 
/** 
 * 继承了Person类的子类Boy 
 */ 
public class Boy extends Person{} 

 

 ExtendsTest.java

 

package com.extendsStudy.test; 
 
import com.extendsStudy.model.Boy; 
 
public class ExtendsTest { 
    public static void main(String[] args) { 
        Boy boy = new Boy();    //创建一个boy对象 
        boy.public_age = 11;    //变量必须先声明再赋值最后才能使用,因为在model类中没有赋值,所以在这里要记得赋值 
        System.out.println(boy.public_age);     //输出public_age属性的值 
        boy.setPrivate_name("haha");    //调用private_name属性的setter方法对父类中的private_name属性进行复制 
        System.out.println(boy.getPrivate_name());      //调用private_name属性的getter方法获取父类中的private_name属性的值 
    } 
} 
 

 

 

 

 

0
0
分享到:
评论
4 楼 hjj20040849 2012-07-05  
feipigzi 写道
feipigzi 写道
我记得第一天看java教程的时候就记得继承就是继承父类的公有。。。。。

提供另一种理解思路

子类里有一个区域放的父类的实例,子类内存区里有一个this指针,指向了这个内存区里包括的父类实例区

在父类以外的地方是不能通过  父类实例来访问私有属性或者方法的,所以呢,继承也当然继承不了私有属性和方法


我说的是内存,不是说语法,实际上你用this也可以访问父类的公有属性。。。

哦哦,我知道你的意思了。
就是像下面那样。

public class Parent {
public int name = 1;
}

public class Child extends Parent{
public void say(){
System.out.println(this.name);
}
}

public class ExtendsTest1 {
public static void main(String[] args) {
Child c = new Child();
c.say();
}
}
3 楼 feipigzi 2012-07-04  
feipigzi 写道
我记得第一天看java教程的时候就记得继承就是继承父类的公有。。。。。

提供另一种理解思路

子类里有一个区域放的父类的实例,子类内存区里有一个this指针,指向了这个内存区里包括的父类实例区

在父类以外的地方是不能通过  父类实例来访问私有属性或者方法的,所以呢,继承也当然继承不了私有属性和方法


我说的是内存,不是说语法,实际上你用this也可以访问父类的公有属性。。。
2 楼 hjj20040849 2012-07-04  
feipigzi 写道
我记得第一天看java教程的时候就记得继承就是继承父类的公有。。。。。

提供另一种理解思路

子类里有一个区域放的父类的实例,子类内存区里有一个this指针,指向了这个内存区里包括的父类实例区

在父类以外的地方是不能通过  父类实例来访问私有属性或者方法的,所以呢,继承也当然继承不了私有属性和方法

这个你理解错了,在子类中访问父类的东西,是用super关键字的,而this是用来访问类本身的,也就是说,this是指向本身的,而super是指向他的父类的……
1 楼 feipigzi 2012-07-04  
我记得第一天看java教程的时候就记得继承就是继承父类的公有。。。。。

提供另一种理解思路

子类里有一个区域放的父类的实例,子类内存区里有一个this指针,指向了这个内存区里包括的父类实例区

在父类以外的地方是不能通过  父类实例来访问私有属性或者方法的,所以呢,继承也当然继承不了私有属性和方法

相关推荐

    JAVA常见错误代码分析

    总结一下,JAVA中的一些常见错误代码通常与以下几点有关: 1. 接口与类之间的冲突:当一个类同时实现多个接口,且这些接口包含同名变量时,需要明确指定使用哪个接口的变量。 2. `final`变量的使用:`final`变量一旦...

    第一章认识Java.

    根据描述中的“特点”,我们总结出Java的一些显著特性: - **简单**:Java的设计理念之一就是尽可能简化编程模型,使得开发者能够快速上手。 - **跨平台**:Java最著名的特性之一就是“一次编写,到处运行”(Write ...

    简单JAVA例程(绝对新手实例)认识JAVA

    这个“简单JAVA例程(绝对新手实例)”的压缩包文件提供了入门级别的Java代码示例,帮助新手逐步认识和了解Java编程。 首先,让我们来探讨Java的基础知识: 1. **Java语法基础**:Java的语法结构与C++类似,但更加...

    Java_序列化的高级认识

    在Java中,子类继承自父类时,如果父类可序列化,那么子类默认也是可序列化的。然而,这可能会引发一些意料之外的问题,尤其是当父类中有敏感信息或者不希望被序列化的字段时。此时,`transient`关键字的作用就显得...

    初步认识java教程

    Java的语法结构清晰,去除了C/C++中的一些复杂特性,比如指针和多重继承,使得初学者能够更快地掌握这门语言。 #### 三、Java与C/C++的主要区别 **1. 指针** Java不支持指针,因此无法直接操作内存地址。这一点是...

    java SE.docx

    9. **面向对象认识**:面向对象编程(OOP)是Java的核心特性,它基于类和对象,强调封装、继承和多态三大原则。 10. **对象的封装性**:封装是OOP的基本概念,它隐藏了对象内部的实现细节,仅通过公共接口暴露必要...

    java基础讲义-帮助大家简单认识JAVA

    Java的健壮性体现在自动内存管理,避免了内存泄漏等问题,同时限制了一些可能导致程序崩溃的语言特性,如全局变量和指针。 与C和C++相比,Java简化了许多概念,如没有全局变量、预处理指令(如#include和#define)...

    Java实验报告——用户登录系统

    【Java实验报告——用户登录系统】的实验主要围绕Java异常处理机制展开,旨在让学生深入理解和掌握Java中的异常处理。在用户登录系统这个实际场景中,实验者需要运用异常处理来确保程序的健壮性。 首先,实验的核心...

    Agile Java 中文版

    除此之外,书中可能还会涉及一些其他主题,比如Maven或Gradle构建工具的使用,理解JVM工作原理,熟悉IDEA或Eclipse等开发环境的配置,以及版本控制工具如Git的运用。这些辅助工具和技术可以帮助开发者更高效地进行...

    Java软件开发实战 Java基础与案例开发详解 1-2 认识java语言 共10页.pdf

    #### 1-2 认识Java语言 **1.2.1 Java语言的特性** Java是一种功能强大且用途广泛的编程语言,其核心特性包括: 1. **简单高效**:Java语言的设计理念之一就是简单易学,同时又具备高效的执行能力。它去除了许多...

    Java系列之JAVA简介.mp4

    Java是一种广泛使用的高级编程语言,由Sun Microsystems(后被甲骨文公司收购)于1995年发布。它的设计目标是实现“一次编写...观看这样的视频教程是学习Java的优秀起点,能快速建立起对Java语言的整体认识和实践能力。

    计算机软件开发中JAVA编程语言的应用.pdf

    Java编程语言在计算机软件开发领域具有重要的地位和广泛的应用,其特点和优势对于...软件开发设计人员应充分认识到Java语言的重要作用,并在工作中积极推广和应用Java技术,以提升软件开发的整体水平和软件产品的质量。

    java基础的文档

    本文档“初识Java_第18页_下载资料.pdf”可能涵盖了以上部分或全部内容,帮助初学者建立起对Java语言的基础认识,进一步深入学习Java的高级特性,如异常处理、多线程、网络编程、反射机制、注解、模块化系统等。...

    java初级教程~~~

    异常处理是Java编程中的一个重要环节,它允许程序员优雅地处理程序运行时可能出现的错误。try-catch-finally结构用于捕获和处理异常,保证了程序的健壮性。 在实际编程中,集合框架是必不可少的知识。Java提供了...

    清华大学《JAVA语言与面向对象程序设计》试卷及其答案.pdf

    5. Java异常处理:文档提到了使用try-catch语句处理异常,这是Java中处理错误的标准方式。 6. Java接口与抽象类:文档中提到了抽象类的概念(abstract),这表明学生需要了解面向对象程序设计中抽象类和接口的作用...

    java开发实战经典

    书中首先会介绍Java的历史和特点,让读者对这门语言有一个宏观的认识。接着,会深入到Java的基础语法,包括变量、数据类型、运算符、流程控制语句(如if、switch、for、while等)以及方法的定义与调用。这部分内容...

    java 课件让你成为真正的java高手

    通过这个详尽的课件学习,你将对Java有全面的认识,掌握核心概念,并能够运用所学知识进行实际项目开发,逐步成为Java编程的专家。同时,实践是检验理论的最好方式,边学习边动手操作,将理论知识转化为实际技能,将...

    JAVA2实用教程代码及例子(青华大学出版社)

    9. **JAVA标准库**:书中可能会涵盖一些常用的JAVA标准库,如JDBC用于数据库连接,或者网络编程相关的类库。 10. **项目实战**:教程中的例子和代码可能包括实际的项目案例,如简单的计算器程序、学生管理系统或者...

    Java桌面程序开发第1章-认识Java桌面程序.ppt

    本章内容主要涵盖了对Java桌面程序的认识,包括Eclipse IDE的使用,GUI开发包Swing的介绍,以及如何在IDE中开发和运行Java桌面程序。 1. **Eclipse IDE的使用**: Eclipse是一款强大的开源集成开发环境,支持多种...

Global site tag (gtag.js) - Google Analytics