先上代码
class Yz_21 {
protected static String c = "父类Yz_20变量c"; public static void aa(Yz_20 l) {
System.out.println("父类Yz_20中的aa方法");
} protected String bb(String a, String b) {
a = "父类Yz_20中的bb方法";
b = "字符串b";
c = a+b; //this.c=a+b;
System.out.println(c);
return c; //return this.c;
} public static void main(String[] args) {
System.out.println(c);
Yz_20.bb("a", "b");
System.out.println(c);
}}
代码如上所示,输出结果:
父类Yz_20变量c
父类Yz_20中的bb方法 字符串b
父类Yz_20变量c问题:
1.成员变量c 和成员方法 bb()中的c 是一样吗?
我理解的是一样的,我注释了//this.c=a+b; //return this.c; 和不用this引用的结果是一样的,
2.成员方法 bb()中的return c,怎么理解?
c在方法中的取值是父类Yz_20中的bb方法 字符串b ,return c 是将方法中的c值返回,我想既然返回,那么第二个System.out.println(c); c的输出值应该是父类Yz_20中的bb方法 字符串b ,可实际输出值是父类Yz_20变量c,return c;有结束这个方法的意思,这个c 应该和方法中的String保持一致,
3.这个return c 怎么理解,c的取值是多是,return是返回值,那么这个c的值返回到哪里去了?
4.类名.静态类成员 类名调用只能是静态方法吗?
Yz_20.bb("a", "b");这样调用,并没有提示错误啊,bb也不是静态方法,Yz_20.bb("a", "b")a和b是字符串a、b,protected String bb(String a, String b) 中的a、b 是变量?方法调用中的a、b是对String a,String b的赋值吗? 它们之间应该怎门理解?求解,谢谢
class Yz_21 {
protected static String c = "父类Yz_20变量c"; public static void aa(Yz_20 l) {
System.out.println("父类Yz_20中的aa方法");
} protected String bb(String a, String b) {
a = "父类Yz_20中的bb方法";
b = "字符串b";
c = a+b; //this.c=a+b;
System.out.println(c);
return c; //return this.c;
} public static void main(String[] args) {
System.out.println(c);
Yz_20.bb("a", "b");
System.out.println(c);
}}
代码如上所示,输出结果:
父类Yz_20变量c
父类Yz_20中的bb方法 字符串b
父类Yz_20变量c问题:
1.成员变量c 和成员方法 bb()中的c 是一样吗?
我理解的是一样的,我注释了//this.c=a+b; //return this.c; 和不用this引用的结果是一样的,
2.成员方法 bb()中的return c,怎么理解?
c在方法中的取值是父类Yz_20中的bb方法 字符串b ,return c 是将方法中的c值返回,我想既然返回,那么第二个System.out.println(c); c的输出值应该是父类Yz_20中的bb方法 字符串b ,可实际输出值是父类Yz_20变量c,return c;有结束这个方法的意思,这个c 应该和方法中的String保持一致,
3.这个return c 怎么理解,c的取值是多是,return是返回值,那么这个c的值返回到哪里去了?
4.类名.静态类成员 类名调用只能是静态方法吗?
Yz_20.bb("a", "b");这样调用,并没有提示错误啊,bb也不是静态方法,Yz_20.bb("a", "b")a和b是字符串a、b,protected String bb(String a, String b) 中的a、b 是变量?方法调用中的a、b是对String a,String b的赋值吗? 它们之间应该怎门理解?求解,谢谢
protected static String c = "父类Yz_20变量c"; public static void aa(JavaSeTest l) {
System.out.println("父类Yz_20中的aa方法");
} protected String bb(String a, String b) {
a = "父类Yz_20中的bb方法";
b = "字符串b";
c = a + b; // this.c=a+b;
System.out.println(c);
return c; // return this.c;
} public static void main(String[] args) {
System.out.println(c);
new JavaSeTest().bb("a", "b");
System.out.println(c);
}
}
父类Yz_20变量c
父类Yz_20中的bb方法字符串b
父类Yz_20中的bb方法字符串b
2. 方法运行结束后,返回的结果为c的值
3. c的值返回到调用那个方法的objec那里了。 比如 String result = bb(), c的值就赋给result了
4. 不明白什么意思
{
protected static String c = "父类Yz_20变量c"; public static void aa(Yz_20 l)
{
System.out.println("父类Yz_20中的aa方法");
} protected String bb(String a, String b)
{
a = "父类Yz_20中的bb方法";
b = "字符串b";
String c = a + b; // this.c=a+b;
System.out.println(c);
System.out.println(this.c); return c; // return this.c;
} public static void main(String[] args)
{
System.out.println(c); Yz_20 yz_20 = new Yz_20();
String returnC = yz_20.bb("a", "b"); System.out.println(returnC);
}}首先声明,我也没学多久就20天,我对你提出的是这么理解的:1、成员变量c和方法里的变量c不一样 外面的可以拿到方法里面用,但是外面读不到方法里的。你这里的操作相当于把a+b的结果赋值给外面的c,参见我写的里面方法内又声明了个c,如果方法内的c和外面的c是一个java不允许重复声明的,所以不一样,我写的里面c是方法内的,this.c是全局的(就是类里面声明的那个c,应该叫全局变量吧),
2、return c后没接收,参见main里面的returnC接收返回值3、解释同2,没有接收值,你的是打印你更改后的全局变量c4、您的类名很有点点问题,您写的这个类是21,调用的20的静态方法,所以我很纠结看不到类编号20的那个,我猜测是同包原因,所以输出结果实际是编号为20的那个类里面的静态方法
方法上面写的是形式变量,我自己理解为调用时候就是把
String a="a";
String b="b";
protected static String c = "父类Yz_20变量c"; public static void aa(Yz_20 l) {
System.out.println("父类Yz_20中的aa方法");
} protected String bb(String a, String b) {
a = "父类Yz_20中的bb方法";
b = "字符串b";
c = a+b;
System.out.println(c);
return c;
} public static void main(String[] args) {
System.out.println(c);
Yz_20.bb("a", "b");
System.out.println(c);
}}
完整的代码
package yz; class Yz_20 {
protected static String c="父类Yz_20变量c";
public static void aa(Yz_20 l){
System.out.println("父类Yz_20中的aa方法");
}
protected static String bb(String a,String b){
a="父类Yz_20中的bb方法";
b=" 字符串b ";
String c=a+" "+b;
System.out.println(c);
return c;
}
} public class Yz_19 extends Yz_20{
public Yz_19(){
System.out.println("Lz_19的构造方法");
}
public String bb(){
System.out.println("子类Yz_19中的bb方法");
return "返回bb方法";
}
public static void main(String[] args){
Yz_19 p=new Yz_19();
Yz_20 q=new Yz_20();
aa(p);
Yz_20.bb("a","c");
q.bb("a", "b");
p.bb();
}
}
完整的代码
{
protected static String c = "Yz_21变量c"; public static void aa(Yz_20 l)
{
System.out.println("Yz_21中的aa方法");
} protected String bb(String a, String b)
{
a = "Yz_21中的bb方法";
b = "Yz_21中的字符串b";
c = a + b;
// this.c=a+b;
//String c=a+b//区分这个,方法体内部声明的c和前面的this.c
System.out.println(c);
return c; // return this.c;
} public static void main(String[] args)
{
System.out.println(c);
Yz_20.bb("a", "b");//是输出的类20的里面的静态方法bb,区分Yz_21.bb,Yz_21.bb不是静态方法执行不了的
System.out.println(c);
}}class Yz_20
{
protected static String c = "父类Yz_20变量c"; public static void aa(Yz_20 l)
{
System.out.println("父类Yz_20中的aa方法");
} protected static String bb(String a, String b)
{
a = "父类Yz_20中的bb方法";
b = "Yz_20中的字符串b ";
String c = a + " " + b;
System.out.println(c);
return c;
}
}整理完毕,看输出
2:bb方法中的c是局部变量,在方法调用结束这个c变量就不存在了
3:return回来的值你没有用 所以你这个方法其实调了和没调一样
4:静态方法里只能调静态方法,你的bb方法不是静态的 所以不能在main方法里用,你可以直接bb("a","b")但不可以Yz_20.bb("a", "b")这样用