黑马程序员技术交流社区

标题: 父类中的方法,子类可以直接拿过来用? [打印本页]

作者: 会说话的木头    时间: 2014-5-5 21:41
标题: 父类中的方法,子类可以直接拿过来用?
如题!:handshake
作者: 646245771    时间: 2014-5-5 21:56
本帖最后由 646245771 于 2014-5-5 21:59 编辑

       不是这样子的,如果需要实现不一样的功能的话,需要重写一遍。但是如果是跟父类的方法一模一样的话,就可以直接拿过来用。比如一个父类是人,他的子类是张三。”人“的类已经实现了吃饭和工作的方法,如果张三仅仅需要一个吃饭的方法没有特殊的地方,那么就不需要重写。但是如果张三的工作和别人可能不一样,这时候需要对张三的工作方法进行重写。
       楼主要记住:当子类出现和父类一模一样的函数时,如果此时子类对象调用父类中的同名函数,那么则会运行子类函数中的内容。就好像父类的函数被覆盖一样。这种情况是函数的另一个特性:重写(或者叫覆盖)
     当子类继承父类,沿袭了父类的功能到子类中,但是子类虽具备该功能,但是功能的内容却和父类不一致。这时,没有必要定义新功能,而是使用覆盖的特殊性,保留父类的功能定义,并重写功能对象。

作者: ☆枫の云    时间: 2014-5-5 22:19
楼上说的很全面了=.=,我就不多说了,就简单说两句
1.如果子类没有复写父类的方法,那么可以直接调用。
2.如果子类复写了父类的方法,那么调用时,就调用的是子类方法,而不是父类的。
作者: you4580    时间: 2014-5-6 19:13
问题其实问太专业我猜应该java初学者吧
按照意思重载了父类该方法时操作子类定义变量
.jackshow.parent;

public class Point {

private String x;
private String y;

/**
  * 默认构造函数
  */
public Point(){
  
}

public String getX() {
  return x;
}

public void setX(String x) {
  this.x = x;
}

public String getY() {
  return y;
}

public void setY(String y) {
  this.y = y;
}
}

package net.jackshow.child;

import net.jackshow.parent.Point;

public class Point3D extends Point{

static int c=0;

public Point3D(){
  super();
  c++;
}

public static void main(String[] args){
  Point3D child = new Point3D();
  Point3D child1 = new Point3D();
  System.out.println("x="+child.getX()+",y="+child.getY()+",c="+c);
}
}

第3,你在class前面加上abstract,接口则把class改为interface,然后变量全部改为public的




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2