V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ppppppp123
V2EX  ›  程序员

如何向高中生介绍 Java 中的类,对象,接口等概念?

  •  
  •   ppppppp123 · 222 天前 · 2890 次点击
    这是一个创建于 222 天前的主题,其中的信息可能已经有所发展或是发生改变。
    先歪个楼,祝大家节日快乐~

    高三表弟对程序很感兴趣,如何用简单好懂的方式让他们领悟 Java 中的这些词汇的设计用意?
    第 1 条附言  ·  220 天前
    忘了贴 background:他不参加国内高考,直接参加美国大学的入学前考试。
    47 条回复    2023-02-16 11:21:29 +08:00
    jooks
        1
    jooks  
       222 天前
    尚硅谷
    netabare
        2
    netabare  
       222 天前 via Android
    一个具体的物体,一个可以划入若干个物体的分类,还有能够表达「某些分类的共性」的抽象概念,应该能找到一些比较好的例子去讲解。
    GeruzoniAnsasu
        3
    GeruzoniAnsasu  
       222 天前
    GUI 编程。

    对话框类 => 对话框的具体设计
    对话框对象 => 几个一模一样但不同的对话框
    接口 => 对话框模板

    我当初一夜之间领悟 OO 这些概念全靠的是 MFC
    duke807
        4
    duke807  
       222 天前 via Android
    你应该教 python 、js ,而非 java
    Leviathann
        5
    Leviathann  
       222 天前
    interface 这个概念,很多人理解都有偏差,理解不到为什么 ui ,user interface 和程序里的 interface 用同一个词
    实际上他们本就是同一个东西
    cmdOptionKana
        6
    cmdOptionKana  
       222 天前
    先让他在不理解设计用意的状态下写一些程序,写着写着,他自己就悟了。

    反之,如果实践太少,靠理论灌输是很难吸收的。
    Leviathann
        7
    Leviathann  
       222 天前
    另外可能对没有程序经验的,直接从贴近数学的基础函数式编程讲起可能更容易理解
    而且我记得当初上高中的时候数学是有讲算法的,不是具体的某个算法,而是算法这个概念本事
    qsmd42
        8
    qsmd42  
       222 天前
    高三学生跟大一学生在学 OOP 方面能有什么区别...
    你当初怎么学的 就怎么教给他呗
    Chieh
        9
    Chieh  
       222 天前
    harvard cs50
    1145148964
        10
    1145148964  
       222 天前 via Android   ❤️ 4
    高三这个时候你教他,你这责任有点牛逼
    windyskr
        11
    windyskr  
       222 天前
    现在距离 2023 年高考还有 112 天 9 小时
    majula
        12
    majula  
       222 天前
    不建议上来就讲 Java 这种丑陋的工业语言,更进一步说,不建议上来就讲任何编程语言

    先从理论开始,找几本 PLT 的书给他看

    如果他不止对“程序”感兴趣,还对计算机的工作原理感兴趣,以后有可能想以职业为目标发展的话,那就直接让他看名校的 CS 公开课吧
    echoless
        13
    echoless  
       222 天前 via Android
    狗汪汪 猫喵喵 鸭子嘎嘎嘎 都是动物叫 幼儿园都懂

    叫起来像鸭子就是鸭子 哈哈
    lingly02
        14
    lingly02  
       222 天前 via iPhone
    我觉的兴趣是最好的老师。楼主可以从他最感兴趣的方面入手。比如让他列出心目中定义一个女朋友的属性和基本行为,比如身高体重之类的,教给他类的概念。再让他列出不同类型女朋友的特定行为,比如打扫,花钱等等。教给他接口和子类的概念。再将他现实中的女朋友实例化,告诉他什么是对象。以此类推,还可以教他组合,聚合,多态之类的
    yaoyao1128
        15
    yaoyao1128  
       222 天前 via iPhone
    emm 如果可以的话,用 cpp 解释带入到 java 感觉比直接用 java 理解简单
    ns09005264
        16
    ns09005264  
       222 天前
    以前学的时候,老师是从万物皆对象引入的。。
    另外建议换个别的语言来学,比如 golang ,javascript 这些比较简单的,学的快,写点小工具也轻松,有成就感。
    Pichai
        17
    Pichai  
       222 天前 via iPhone
    高三还是抓紧时间搞个好本科
    Chad0000
        18
    Chad0000  
       222 天前
    @cmdOptionKana #6
    赞同,大概 20 年前,我高中时花了一个月泡在学校的电子阅览室(因为不要钱),拿着一本 Frontpage 2000 反复阅读并练习,全文翻了好几遍,学会了如何制作网页,同时也悟出了网站是什么。
    leegradyllljjjj
        19
    leegradyllljjjj  
       221 天前 via Android   ❤️ 8
    这些程序员看来真把编程当圣经了
    shakoon
        20
    shakoon  
       221 天前
    相比之下,不如给他介绍个对象?[doge]
    fiypig
        21
    fiypig  
       221 天前
    讲通俗比喻更容易理解
    ALLROBOT
        22
    ALLROBOT  
       221 天前
    如果是入门,建议用易语言,看中文代码至少能建立一个概念,然后再玩 python ,后面就随意了

    毕竟日常生活用得上就几门语言 python ,js 之类。。。其它语言使用的机会不多
    Lefi
        23
    Lefi  
       221 天前
    高三不是应该迎战高考么,怎么还有时间写程序...
    darkengine
        24
    darkengine  
       221 天前
    我懂了,你的用意是劝退对不对
    onice
        25
    onice  
       221 天前
    可以举现实生活中的例子,让他体会面向对象的思想。比如告诉他,在 Java 中,一切都是对象。任何东西都可以抽象成类,一个东西有他的特性和行为,在 Java 中,用成员属性和方法来表示。比如要表示一台主机,思考一下,这台主机的特性是不是有:品牌,CPU 型号,内存大小,显卡型号,主板型号,硬盘容量等特性。这种特性在 Java 中用成员属性来表示。但是这台主机也有行为,是不是可以开机和关机,光驱可以弹出和关闭,类似于这种带有动作之类的行为,Java 中用方法来表示。。然后写一段 demo 给他看看。。。类似这样子吧,没编程经验,不了解面向过程的思想,完全领悟 OOP 可能还不行,可能很难理解为什么 OOP 要这么设计。但是可以让他体验一下什么是 OOP 。
    nothingistrue
        26
    nothingistrue  
       221 天前
    编程的基础,是数学(算法)、语言(语法)、逻辑学、哲学( OOP 、设计模式等等)。这些东西,有些都参加工作的老手都不懂——正好这两天有几个怼 OO 的,就更别说还在准备八股文式中高考的初高中生了。省省别介绍了,真有不准备考试的闲工夫,教他打游戏谈恋爱都比这强。
    nu11ptr
        27
    nu11ptr  
       221 天前
    转盘扫把拖拉机.jpg
    wangerka
        28
    wangerka  
       221 天前
    建议和[我从来没见过比面向对象更糟糕的编程范式和语言]( https://www.v2ex.com/t/915980)battle 一下
    llsquaer
        29
    llsquaer  
       221 天前
    用的 python 我的领悟是

    函数多了就把相似功能的封装到一个类里面,去执行相关的功能.. 就像家里东西多了,总的要分类分区域存放方便使用.
    DefoliationM
        30
    DefoliationM  
       221 天前 via Android
    直接讲面向对象,不要讲 Java ,感觉还是比较好理解的。
    debuggerx
        31
    debuggerx  
       221 天前
    自学的 java ,至今觉得 java 基础这块讲的最好的还是 mars 老师这套:
    https://www.bilibili.com/video/BV15W411C7z6?p=12
    Hurriance
        32
    Hurriance  
       221 天前 via iPhone
    蛋糕模具,一个个蛋糕
    NoKey
        33
    NoKey  
       221 天前
    高三毕业再说~
    AlexHsu
        34
    AlexHsu  
       221 天前
    为啥不从面向过程开始讲呢 c 和 python 甚至是 go 都比 java 适合当第一门语言啊
    simplereasy
        35
    simplereasy  
       221 天前
    head first java 讲的很好的入门书籍
    lclei
        36
    lclei  
       221 天前 via iPhone
    @lingly02 你是懂女朋友的
    Ericcccccccc
        37
    Ericcccccccc  
       221 天前
    高中生多学英语. 努力考更好的学校.
    liuidetmks
        38
    liuidetmks  
       221 天前
    高中生不是应该学好,上好学校吗。代码,设计模式玩的飞起没啥用。
    aulayli
        39
    aulayli  
       221 天前 via Android
    先学会 java 基础吧,直接看廖雪峰的教程就行了。
    brucebie
        40
    brucebie  
       221 天前
    还是先学 C 语言比较好,后面再学 C++,再后面学其它语言就容易了
    simonlu9
        41
    simonlu9  
       221 天前
    接口是功能,类的一个抽象的东西,对象是个具体的东西,比如手机吧,是一个类,你可以给它加上充电功能,充电功能是个标准的东西,规范了 typec 接口,然后厂商按照这个设计图来生产一个带充电的手机出来就可以了,后续在加功能,比如拍照,nfc ,蓝牙,都是一样,通过不同接口协议实现
    saberlove
        42
    saberlove  
       221 天前
    对于高中生来说,介绍 Java 中的类、对象、接口等概念需要用简单易懂的语言和具体例子来解释。以下是一个可能的介绍方式:

    类( Class ):在 Java 中,类是一种数据类型,它定义了一组属性和方法,可以被用来创建对象。例如,我们可以定义一个名为“Person”的类来表示一个人,这个类包含了一些属性(例如姓名、年龄、性别等)和方法(例如说话、跑步等)。

    对象( Object ):对象是类的一个实例。当我们创建一个类的对象时,我们实际上是在创建该类的一个实例。例如,我们可以使用“Person”类来创建一个名为“tom”的对象,该对象包含了一个人的所有属性和方法。

    接口( Interface ):接口是一种抽象类型,它定义了一组方法,但不提供方法的实现。其他类可以实现这个接口,并提供这些方法的实现。例如,我们可以定义一个名为“Playable”的接口来表示可播放的对象,该接口包含了一个名为“play”的方法。然后我们可以让“CDPlayer”类实现“Playable”接口,提供“play”方法的具体实现。

    通过这些简单的解释和例子,高中生可以初步了解类、对象、接口等概念。当他们深入学习 Java 编程时,他们将更详细地了解这些概念的含义和用法。
    arkerdota
        43
    arkerdota  
       221 天前
    类 对象 就是为了精简代码量用的,你可以以设计一个具体的系统为例,比如一个超市的管理系统,一个一个的加入,其实比较建议看大话设计模式
    cnbatch
        44
    cnbatch  
       221 天前
    高三?最好高考完了再说,反正也不差这几个月的时间
    buffzty
        45
    buffzty  
       220 天前
    如果我是老师 我不会直接教类. 我先教他定义一个函数,再使用这个函数,然后再定义三四个函数. 这时候引申一下 如果定义了几百个函数 就得归类,此时教他类. 如果只是教他用 他很难懂 他也不知道为什么要用类
    huyangq
        46
    huyangq  
       220 天前
    建议从数学入手,程序就是状态机,就是根据算法产生的一条条指令,也就是从面向过程出发。
    然后当软件规模上去之后,面向对象的思想就自然而然就出来了。
    面向对象是一个方法论,是一种好的思维方式,跟语言本身是无关的,linux 源码处处是面向对象,但用的是 C 。
    有了这些思想,自然而然就会有一些专有名词,然后用人话解释那些所谓的名词。
    If you can’t explain it simply, you don’t understand it well enough.
    huyangq
        47
    huyangq  
       220 天前
    真要挑一个语言,还得是 C/C++,C 的语法很简单,慢慢地 C++为了面向对象写起来方便,就设计了很多东西,那些设计地目的是什么?怎么说呢?这个还得是一个慢慢学,慢慢悟地过程,一下就懂的那是天才。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1007 人在线   最高记录 5930   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 23:03 · PVG 07:03 · LAX 16:03 · JFK 19:03
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.