方法的参数是个对象是怎么回事
例如 public void fun(A a){}
一出现这样类似的 我就迷糊了 谁能帮我解释一下 最好详细点 让我明白
例如 public void fun(A a){}
一出现这样类似的 我就迷糊了 谁能帮我解释一下 最好详细点 让我明白
解决方案 »
- jnlp和applet的区别
- 帮我看看我的扫雷小程序问题
- 如何创建模板的实例
- 百狗狗双搜(搜索之家)---搜索资料的最好网站(捧场就给分)^_^
- 我想实现这样的导入(import)路径,但不知该如何设定环境变量?!
- 大家帮我看一下这个搜索空闲IP的java程序
- 关于数据类型的转换
- 在borland主页上下的教程,按照步骤做出错!
- 如果改变一个窗口的大小,我用setsize的时候窗口会重画会出现闪烁,如何才能让窗口不闪烁呢???????
- File类的问题
- 初学者问问高手门 Z变量 为什么 不能在Method2中访问到???是什么原因 他不已经继承了OuterD1不是已经继承了OuterA1了吗?请大家指教一下
- java新手问题 请大家帮帮忙
class Human
{
public void speak()
{
System.out.println("我是人类");
}
}
class Man extends Human
{
public void speak()
{
System.out.println("我是男人");
}
}
class Woman extends Human
{
public void speak()
{
System.out.println("我是女人");
}
}
public class MyMultipho { //如果子类的对象类型传递给h,那么就会自动转换
public static void letMeSpeak(Human h)
{
h.speak();
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Woman w=new Woman();
Man m=new Man(); letMeSpeak(w);
letMeSpeak(m);
}
}
当然还有其它情况,你先把多态这块弄清楚把
{
String method();
}
class Child1 implements Parent
{
public String method()
{
return "Child1";
}
}
class Child2 implements Parent
{
public String method()
{
return "Child2";
}
}
public class Test
{
public static void main(String[] args)
{
Parent parent = new Child1();
System.out.println(parent.method());
parent = new Child2(); System.out.println(parent.method());
}
} 输出结果: Child1 Child2 只有多个子类从一个父类继承或实现一个接口。 在建立这些子类实例时,都用父类或接口做为变量类型,如上例中的parent。也就是说,用户对应的接口都是一个Parent。而由于new后面的子类不同,而产生调用同一个方法method返回不同结果的显现叫多态。就是同一个方法在使用不同子类时有不同的表现(在这里是不同的返回值)。 方法重载不叫多态。
{
h.speak();
}这里letMeSpeak方法中的参数是Human类型,而
public static void main(String[] args) {
// TODO Auto-generated method stub
Woman w=new Woman();
Man m=new Man(); letMeSpeak(w);
letMeSpeak(m);
}
这里将Woman和Man类型传入letMeSpeak方法中,分别运行Woman和Man类中的speak()方法,也就是将子类向上转型为父类,多态的表现
package dao;import supper.UserSupper;
import java.util.Vector;
import javax.swing.JOptionPane;
import java.sql.SQLException;
import java.sql.*;
import bean.*;
import java.util.Date;
import java.util.ArrayList;
import java.text.DateFormat;
public class UserMainfo {
Connection con = null;
PreparedStatement ps = null;
ResultSet set = null;
//添加物资信息
public boolean addMainfo(mainfo m) {
boolean bool = false;
try {
con = UserSupper.getCon();
ps = con.prepareStatement("insert mainfo values(?,?,?,?,?,?,?,?)");
ps.setString(1, m.getMid());
ps.setString(2, m.getMname());
ps.setInt(3, m.getMleixing());
ps.setFloat(4, m.getPrice());
ps.setInt(5, m.getNum());
ps.setString(6,DateFormat.getDateInstance().format(m.getBuytime()));
ps.setString(7, m.getzhuangtai());
ps.setString(8, m.getBin()); int i =ps.executeUpdate();
if (i>0) {
bool = true;
}
UserSupper.getClose(con, ps, set);
} catch (SQLException ex) {
}
return bool;
} //所有物资信息
public Vector getMinfo() {
Vector vv = new Vector();
try {
con = UserSupper.getCon();
ps = con.prepareStatement(
"select mainfo.id as '物资编号', mname as '物资名称', mlx.name as '物品类型',price as '单价',num as '数量',buytime as '购买时间',zhuangtai as '状态',bin as '备注' from mainfo join mlx on mainfo.mleixing=mlx.id");
set = ps.executeQuery();
while (set.next()) {
Vector v = new Vector();
v.add(set.getInt("物资编号"));
v.add(set.getString("物资名称"));
v.add(set.getString("物品类型"));
v.add(set.getFloat("单价"));
v.add(set.getInt("数量"));
v.add(set.getString("购买时间").substring(0,11));
v.add(set.getString("状态"));
v.add(set.getString("备注"));
vv.add(v);
// System.out.print(vv);
}
UserSupper.getClose(con, ps, set);
} catch (SQLException ex) {
JOptionPane.showMessageDialog(null, "数据库异常", "消息",
JOptionPane.INFORMATION_MESSAGE);
}
return vv;
}
//分类查询
public Vector getLxMinfo(String m) {
Vector vv = new Vector();
try {
con = UserSupper.getCon();
ps = con.prepareStatement(
"select mainfo.id as '物资编号', mname as '物资名称', mlx.name as '物品类型',price as '单价',num as '数量',buytime as '购买时间',zhuangtai as '状态',bin as '备注' from mainfo join mlx on mainfo.mleixing=mlx.id where mlx.name= ?");
ps.setString(1,m);
set = ps.executeQuery();
while (set.next()) {
Vector v = new Vector();
v.add(set.getInt("物资编号"));
v.add(set.getString("物资名称"));
v.add(set.getString("物品类型"));
v.add(set.getFloat("单价"));
v.add(set.getInt("数量"));
v.add(set.getString("购买时间").substring(0,11));
v.add(set.getString("状态"));
v.add(set.getString("备注"));
vv.add(v);
// System.out.print(vv);
}
UserSupper.getClose(con, ps, set);
} catch (SQLException ex) {
JOptionPane.showMessageDialog(null, "数据库异常", "消息",
JOptionPane.INFORMATION_MESSAGE);
}
return vv;
}
//删除物资信息
public boolean deleteMainfo(String m){
boolean bool=false;
try {
con = UserSupper.getCon();
ps = con.prepareStatement("delete from mainfo where id=?");
ps.setString(1, m);
int i = ps.executeUpdate();
if (i > 0) {
bool = true;
}
} catch (SQLException ex) {
JOptionPane.showMessageDialog(null, "数据库异常", "消息",
JOptionPane.INFORMATION_MESSAGE);
}
UserSupper.getClose(con,ps,set);
return bool;
}
//修改物资信息
public boolean updateMainfo(mainfo m){
boolean bool=false;
try {
con = UserSupper.getCon();
ps = con.prepareStatement("update mainfo set id=?,mname=?,mleixing=?,price=?,num=?,buytime=?,zhuangtai=?,bin=?");
ps.setString(1, m.getMid());
ps.setString(2, m.getMname());
ps.setInt(3, m.getMleixing());
ps.setFloat(4, m.getPrice());
ps.setInt(5, m.getNum());
ps.setString(6, m.getBuytime().toString());
ps.setString(7, m.getzhuangtai());
ps.setString(8, m.getBin());
int i = ps.executeUpdate();
if (i > 0) {
bool = true;
}
} catch (SQLException ex) {
JOptionPane.showMessageDialog(null, "数据库异常", "消息",
JOptionPane.INFORMATION_MESSAGE);
}
UserSupper.getClose(con,ps,set);
return bool;
}
}
我从上面给你copy个列子说明以下吧:
Java codeclass Human {
public void speak() {
System.out.println("我是人类");
}
}
class Man extends Human {
public void speak(Human human) {
human.speak();
}
}
程序输出:我是人类
{
h.speak();
}
父类的引用来存放子类的对象
不过public void fun(A a){} 传的是个A类型的对象进来而已..
和我当初学的时候困惑一样,还没从8大基本类型那转过来
引用其实就像是一个对象的名字或者别名,访问对象时,
我们不会直接是访问对象在内存中的数据,而是通过引用去访问。
引用也是一种数据类型,类似于 C 语言中指针的东西,它指示了对象在内存中的地址。
一个具体的对象;所以可以理解参数对象就是传一个地址。