当前位置:编程学习 > JAVA >>

java小问题

//父类的成员域,成员方法会被继承,但是父类的构造方法会被覆盖,用super();就可以调用父类的构造函数但一定要放在子类构造函数的第一句话
//父类的同名成员方法会被覆盖,调用的方法:super.x();,一般不提倡使用与父类同名的成员域,这样会出现编译错误。
//构造方法是特殊的成员方法不需要返回类型,而普通的成员方法这需要返回类型
//子类对象既属于父类有属于子类

class Employee//父类
{
    public int workyear;//父类成员域//可以被子类继承
    
    public Employee()//父类构造方法
    {
       workyear=1;
    }
    
    public void once()//父类的成员方法
    {
      System.out.println("i am once");
    }
}

class teacher extends Employee//子类
{
    public int classhour;//子类成员域//子类中的classhour是子类的classhour
  //public int workyear;//不提倡出现与父类同名的成员域,这样编译一般不会通过
        
    public teacher()//子类构造方法//不需要返回类型//会覆盖父类的构造方法
    {
     //隐式调用父类的构造方法
     //super();
     //当父类的构造方法有参数时,子类在构造方法中必须敲打父类的带参数的构造方法,不然会报错
     //super(30,40,50);
       super();//调用父类中被覆盖的构造方法,必须是构造方法的第一个语句
       System.out.println("the father workyear is "+workyear);
       classhour=96;
    }
    
    public void Employee()//在子类中方法名传递参数与父类均相同的话,就会覆盖父类中的同名方法,称为方法的覆盖
    {                      //因为方法名和类名不一样所以会被当成普通成员方法看待,故需要返回类型void
       workyear=11;
    }
    
    public void output()//每个成员方法需要返回类型
    {
     //once();//父类的成员方法可以被继承
      Employee();//调用自身的成员方法
       System.out.println("the child workyear is "+workyear);
     //System.out.println("the classhour is "+classhour);
    }
    
    public void once()//会覆盖父类的同名成员方法
    {
      super.once();//调用同名的父类成员函数
      System.out.println("i am once too");
    }
}

public class fuckthree//文件名需要和main函数所在的类同名
{
  static void diaoyong(Employee one)
  {
      one.once();//是父类的因为子类的实例对象没有給父类<与three相比>
  }
  
  static void diaoyongtwo(teacher two)
  {
     two.output();//会调用父类和子类的构造函数以及所要求的函数
  }
  
  static void diaoyongthree(Employee three)
  {
     three.once();//有子类的就调用子类的,没子类的就调用父类的
     //three.output();//为什么是错的,既然three是teacher的实例对象//父类中没有output函数所以该语句错误,因为该实例对象是父类的实例对象而不是子类的,虽然子类把自己的实例对象给了父类
  }
  
    public static void main(String []args)
    {
        Employee one= new Employee();
        fuckthree.diaoyong(one);
        
        teacher two=new teacher();
        fuckthree.diaoyongtwo(two);
        
        teacher fuck=new teacher();
        Employee three=fuck;//子类对象赋给父类,虽然three是类型是父类的类型但是我们将子类的对象赋给了three所以现在three是子类的对象。
        if(three instanceof teacher)
        {
           System.out.println("fuckfuckfuckfuckfuck");
        }
        fuckthree.diaoyongthree(three);
    }
}


--------------------编程问答-------------------- [img=C:\Documents and Settings\Administrator\桌面][/img] --------------------编程问答-------------------- [img=C:\Documents and Settings\Administrator\桌面][/img]搜狗截图_2011-10-03_15-21-25.jpg --------------------编程问答-------------------- 我顶,我顶,我顶顶顶  --------------------编程问答-------------------- 楼主想说么? --------------------编程问答-------------------- 不太明白楼主要说明的问题是什么?
补充:Java ,  非技术区
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,