结合内存分析继承的实现

public class MyDog    //先把MyDog.class文件加载到虚拟机,
{
	private static Animal myAnimal; //把Animal.class文件加载进虚拟机,在方法区的静态数据区开辟空间初始值为null,并和MyDog这个类做静态绑定。
	public static void main(String args[]) //在栈中开辟一个主方法栈帧
	{
·	     /*创建对象使父类指向子类,让new的Dog对象和Animal做动态绑定向上转型的特点 
			①对象调用的方法如果已被子类覆写过了则调用的是子类的方法,如果没有被覆写则调用父类的方法
			②如果想要调用子类和父类同名的静态方法不能使用对象点静态方法
			③不能调用子类特有的属性和方法
			④如果想得到子类中和父类同名的非私有属性只能通过getter和setter方法。
			⑤父类指向子类的两种写法 
·			Father f = new Son()     Son s = new Son(); Father f = (Father) s;

         继承: 创建子类对象不会创建父类对象只会调用父类的构造器!!!!!!
          
			在创建子类对象时候,首先调用子类的构造器,
			子类的构造器的第一句话必须是调用父类的构造器直到Object的构造器,否则编译异	常。
			创建子类对象的顺序  父类的成员变量->父类的构造方法 -> 子类成员变量 -> 子类的构造方法。
			执行子类对象的方法或者非私有属性会先去调用this.方法 如果没有该方法则会调用this.super.方法
			Super的作用:super关键字在java中的作用是使被屏蔽的成员变量或者成员方法变为可见,
			 super只是记录在对象内部对父类的属性和方法进行引用。
			总结:相同的方法会被重写,变量没有重写之说,如果子类声明了跟父类一样的变量,
			那意味着子类将有两个相同名称的变量。一个存放在子类实例对象中,
			一个存放在父类子对象中。父类的private变量,也会被继承并且初始化在子类父对象中,只不过对外不可见*/
		myAnimal=new Dog(); 
	    myAnimal.setWeight(50);  父类的方法
		System.out.println("My Dog's Weight is"+myAnimal.getWeight());
  	    //myAnimal.weight=100;
	    // myAnimal.Bark();
	    //Dog dog=new Dog();
	    //dog.Bark();
	}
}
class Animal
{   
	private int weight;		父类的私有属性不会被子类继承
	Boolean sex;
	public Animal()
		{System.out.println("Animal(): "+this);
		this.weight=20;
        this.sex=true;
	   //this.age=10;//看不到子类新增的属性
		}
	
	public int getWeight()
	{
		return this.weight;
	}	
	public void setWeight(int w)
	{  
		this.weight=w;
	    this.sex=false;
		//this.age=10;//看不到子类新增的属性
	    
	}
}
 class Dog extends Animal
{	  /**子类新增属性*/
	  int age; 
	public Dog()
    {
	System.out.println("Dog(): "+this);
	 this.age=10;
	   this.sex=false; 父类的属性
	  //this.weight=20; 父类的私有属性不能被继承
	}
	/**
	 
	*子类新增方法
	*/
    	public void Bark()
	{   
		//this.weight=20;
		this.sex=false;
		System.out.println("Wang~~Wang~~~");
	}
}

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值