关于动态绑定和静态绑定的问题

关于动态绑定和静态绑定的问题

老师好,我还是不太理解动态绑定和静态绑定

还有,请老师帮我看一下下面的代码

public class Bind{
	public static void main(String[] args) {
		Child c = new Child();
		Parent p = c;
		
		System.out.println(p.getPristr());
		System.out.println(c.pristr);
		c.print();
		p.print();
		
		c.print1();
		p.print1();
		
		c.print2();
		p.print2();
		
	}
}
 
class Parent{
	private String pristr = "parent private string";
	String pubstr = "public string";
	
	public String getPristr() {
		return pristr;
	}
 
	public void setPristr(String pristr) {
		this.pristr = pristr;
	}
 
	public Parent() {
		System.out.println("parent构造函数");
	}
	
    final public void print() {
    	System.out.println("parent的print");
    }
    
    public static void print1() {
    	System.out.println("parent的print1");
    }
    
    public void print2() {
    	System.out.println("parent的print2");
    }
    
}
 
class Child extends Parent{
	String pristr = "child private string";
	String pubstr = "public string";
	
	public Child() {
		System.out.println("child构造函数");
	}
	
	public static void print1() {
		System.out.println("child的print1");
    }
	
	public void print2() {
    	System.out.println("child的print2");
    }
}

我调试看了半天还是搞不懂它的执行,子类对象实例化的时候不是应该先从父类的静态成员开始吗,为啥是从父类的构造开始,然后还先执行了父类里的private String pristr = "parent private string";
                                                                String pubstr = "public string";

正在回答

登陆购买课程后可参与讨论,去登陆

2回答

同学你好,程序是会先加载在父类中的print1()方法,但子类中重写父类的print1()方法,则当通过子类实例化对象调用的print1()方法则为子类中的,并不是父类中的print1()方法。

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

好帮手慕小尤 2020-02-17 16:35:20

同学你好,1. 动态绑定最大的特点是由随机生成的数字,来决定动态生成哪一个!运行效果是不确定的,每次的运行效果都不同!

2. 静态绑定就是在程序编译时就绑定的.java中的变量都是静态绑定的,而static和final(所有private默认是final的)修饰的方法是静态绑定的。

3. 子类对象实例化的时候执行顺序:父类静态块-->子类静态块-->父类非静态块-->父类构造方法-->子类非静态块-->子类构造方法  会先执行父类中的内容,然后执行子类中的内容,所以先执行了父类里的private String pristr = "parent private string"; 与 String pubstr = "public string";

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

  • 提问者 Cooooders #1
    老师那不是应该先执行父类里的public static void print1() { System.out.println("parent的print1"); }吗
    2020-02-17 20:40:37
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师