java


图一是父类的方法,图二是子类的。
问题:没法把父类的值传到子类来,但如果把变量名换成一个实际的值却可以传,而且输入父类没有问题。
- 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/723740
- 这篇博客也不错, 你可以看下java类中子类重写父类中的方法,父类对象用子类对象实例化以后,父类的引用如何调用父类中的被重写方法。
- 你还可以看下java参考手册中的 java-国际化 - 介绍如何设计软件,使其能够轻松适应(本地化)各种语言和地区。-隔离特定于本地的数据显示了如何动态地访问随地域变化的对象。-自定义资源包加载
- 除此之外, 这篇博客: 关于Java中同名属性的问题。中的 二、当子类调用从父类型继承过来的方法的时候,所操作的数据都是父类型特征中的数据。 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
public class Test{
public static void main(String[] args){
Student stu = new Student("111","22");
System.out.println(stu.getName()); //输出结果111
}
}
class People {
String name;
People() {
}
People(String name) {
this.name = name;
}
public String getName(){
return this.name;
}
}
class Student extends People{
String name;
Student(){}
Student(String name, String name1){
super(name);
this.name = name1;
}
}
为什么会输出父类的特征呢?
- 其实这是因为当子类的对象在调用方法时,先在子类中找方法,没有找到就去父类里面找,所以调用父类的方法,那么使用的当然是父类中的数据。
- 因为我没有看过java底层是怎么处理这块的,但是可以合理推理:
1、当子类与父类的属性不重名的情况下,那么当我们调用父类继承过来的setter和getter方法,操作的数据我们肯定不会混淆。例如我把子类中的数据改成String sex,你肯定不会混淆,这个时候子类对象调用setName肯定操作的是内存图中父类的那部分特征。现在只不过是将子类的名字改了而已,并没有什么影响。父类中继承过来的函数操作的仍然是父类的那部分特征。
2、况且你要明白的是,父类中定义的方法并不是单纯为了让子类去调用的,同时为了父类的对象,所以不论是父类的对象去调用也好,或者子类的对象去调用也好,SUN公司不可能去开发两种不同的机制,必然是使用的同一种底层。那么既然父类对象去调用setter and getter是访问的父类的属性,那么子类对象去调用继承过来的方法也是访问的父类的属性。
- 您还可以看一下 朱祚华老师的微信支付2021系列之付款码支付一学就会java版课程中的 微信付款码支付课程简介小节, 巩固相关知识点
你还没搞清楚什么是类型,什么是实例
你把值传给一个实例,却到另一个实例里去取值,当然取不到