A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

如题!:handshake

3 个回复

倒序浏览
本帖最后由 646245771 于 2014-5-5 21:59 编辑

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

评分

参与人数 1技术分 +1 收起 理由
枫儿 + 1 赞一个!

查看全部评分

回复 使用道具 举报
楼上说的很全面了=.=,我就不多说了,就简单说两句
1.如果子类没有复写父类的方法,那么可以直接调用。
2.如果子类复写了父类的方法,那么调用时,就调用的是子类方法,而不是父类的。
回复 使用道具 举报
问题其实问太专业我猜应该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的

评分

参与人数 1技术分 +1 收起 理由
枫儿 + 1 赞一个!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马