小弟最经刚刚自学,书本是网上下的,使用一个一个例子很烂,让人听了莫名奇妙。请哪位大哥用通俗的语言讲解一下。
最好举个例子。比如我爸爸是农民,我是学生。我当然可以可以继承种地的本领,不过我爸爸不会我会的外语,爸爸有一项目我不会的那就是耕地!!各位高手们,写个例子。让小弟明白!!多谢了

解决方案 »

  1.   

    你的意思我理解,你继承自你爸爸,你爸爸的本领即方法,你爸爸的money即成员变量,这时你当然可以拥有你爸爸的财产和本领,但是你小时候偷懒不干活,没学会耕地,这时候不能说你爸爸有的本领你都有,此时应该把你爸爸耕地的本领看成私有方法(private method),你是你爸爸的儿子没错,但是这时候你就不会耕地了,但是你上学时候好好学习了,你学会了外语,你爸爸他不会外语啊,你会是因为你自己又定义了子类中新的方法!
      

  2.   

    package com.wy ;class Father
    {
    double money =100000000;//你爸爸拥有很多的money,多少?¥1000000000000.好羡慕啊
    private void gengdi()//看到没有,方法是私有的,意味着你不会继承这个方法,你爸爸小时候没教你耕地,哎,不希望你做农民啊!
    {
    System.out.println("我会耕地!!!,我是农民伯伯");
    }

     public void buyu()
    {
    System.out.println("我会捕鱼!!!,我是渔夫");
    }
    }class Son extends Father
    { void speakEnglish()
    {
    System.out.println("我会英语!!!我六级成绩考了556啊!!!哈哈") ;//你自己上学时候好好学习学会的
    }
    }
    public class Test{
    public static void main(String[] args)
    {
    Son lixinhai123456 = new Son();//
    lixinhai123456.speakEnglish();
    lixinhai123456.buyu();//你爸爸小时候教你捕鱼了,你当然会了
    System.out.println(lixinhai123456.money) ;//看到了吧,你爸爸挣了好多钱,你当然可以用了
    }
    }随便写了一下,希望你可以理解,其实没什么,就是继承中类的变量或者是方法权限问题!执行结果
    我会英语!!!我六级成绩考了556啊!!!哈哈
    我会捕鱼!!!,我是渔夫
    1.0E8
      

  3.   

    完善下代码,多做好事,希望早一天找到工作,阿门!!!package com.wy ;class Father
    {
    double money ;//你爸爸拥有很多的money,多少?¥1000000000000.好羡慕啊
    public Father(double money)
    {
    this.money = money ;
    }
    private void gengdi()//看到没有,方法是私有的,意味着你不会继承这个方法,你爸爸小时候没教你耕地,哎,不希望你做农民啊!
    {
    System.out.println("我会耕地!!!,我是农民伯伯");
    }

     public void buyu()//方法是共有的,你当然可以继承了
    {
    System.out.println("我会捕鱼!!!,我是渔夫");
    }
    }class Son extends Father
    {
    public Son(double money)
    {
    super( money);
    } void speakEnglish()//你自己上学时候好好学习学会的
    {
    System.out.println("我会英语!!!我六级成绩考了556啊!!!哈哈") ;
    }
    }
    public class Test{
    public static void main(String[] args)
    {
    Son lixinhai123456 = new Son(1000000);//
    lixinhai123456.speakEnglish();
    lixinhai123456.buyu();//你爸爸小时候教你捕鱼了,你当然会了
    //这里你没有直接声明钱(money)吧,但是你有没有钱呢?
    System.out.println("我爸爸年轻时候挣得钱,现在留给我了,但是不会乱花的,一共是:"+lixinhai123456.money) ;//看到了吧,你爸爸挣了好多钱,你当然可以用了

    //当你调用你爸爸的耕地这个方法时候,就会出错,为什么呢?你小时候就没学会耕地(你爸爸的耕地方法是私有的)
    lixinhai123456.gengdi();//错误的调用方法!!}
    }
      

  4.   

    上面都说的都对。我补充下。简单工厂设计模式
    Father 父类 (这里用接口也可以)
    sonSan 子类1
    sonEr 子类2public Father getSon(String sonName){
           Father f=null;
          if(sonName.equals("张三"){
               f=new sonSan();
          }else if(sonName.equals("张二"){
               f=new sonEr();
          }  
          return f;
    }
      

  5.   

    这里的父类和子类并不是简单的爸爸和儿子的关系。可以这么理解,就当做是写程序时的一些偷懒行为比如父类A和其中的一个子类SubAclass A{
    public void a(){
    System.out.println("a");
    }
    public void b(){
    System.out.println("b");
    }
    }class SubA extends A{
    public void a(){
    System.out.println("SubA");
    }
    }在实际运行时,JVM所理解的SubA对象是这样的(默认的Object类的方法我就省略了):class SubA extends A{
    public void a(){
    System.out.println("SubA");
    }
    public void b(){
    System.out.println("b");
    }
    }其中方法b就是继承的A中的b方法,而方法a还是SubA类自己定义的。另外,你需要理解声明和赋值的含义,即
    A ins = new SubA()声明的是A对象,但是给它赋的值是一个SubA,所以调用这里的ins.a()方法会调用SubA中的方法,这也就是多态的含义。