JAVA学习.继承环境下对象初始化

原创 2013年12月05日 16:46:52

内存结构图:


示例代码:

Animal 类

package ljy.inheritance;

//你所编写的任何JAVA类都是子类,你没有编写根类的机会,因为在JAVA中
//任何一个类都是Object这个类的子类,如果不显示说明你编写的类是哪个
//类的子类,系统也会安排Object这个类作为你编写的这个类的父类。
public class Animal extends Object {

	
		String name;
		Integer age;
		
		
		public Animal() {
			super();
			
		}
		//默认的无参构造方法,如果没有显示的声明任何构造方法
		//系统会默认为你添上这个构造方法。
		

		public Animal(String name, Integer age) {
			super();
			this.name = name;
			this.age = age;
		}
		
		void run(){
			System.out.println("一只"+this.age+"岁的"+ this.name + "在奔跑!~~");
			
		}
		void sound(){
			System.out.println("一只"+this.age+"岁的"+ this.name + "在吼叫!~~");
		}
	

}

Tiger类

package ljy.inheritance;

//面向对象的编程级别到达复用级别,可以复用一个对象的所有属性和方法
//面向对象编程只能复用到函数。

public class Tiger extends Animal{
	//子类构造方法可以通过调用父类构造方法的方式来完成体内父类
	//部分的初始化,子类调用父类构造方法,只能使用super,不能直
	//呼父类的名称。就像你叫你的父亲叫做爸爸,而不再直呼其名。
	
	
	
	String furcolor;
	
	public Tiger(String name,Integer age,String furcolor){
		
		super(name,age);
		//子类构造方法调用父类构造方法必须放在
		//子类构造方法的语句块的第一句,现有父
		//类之后才有子类,每个类在构造的时候都
		//会默认先调用父类的构造方法,父类构造
		//完之后,才会继续构造子类,逐层构造,
		//直至最终完成整个类的构造。
		this.furcolor = furcolor;
	}
	
	void hunt(){
		System.out.println("一只"+this.furcolor+"的"+ this.name + "在捕猎!~~");
	}

}

测试:

/**
 * 
 */
package ljy.inheritance;

/**
 * @author fshxxxyydys
 *
 */
public class Tester {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		
		Tiger t = new Tiger("东北虎",1,"白色");
		t.hunt();
		t.run();
		t.sound();
		System.out.println(t.toString());
		
		

	}

}

===================================================

Result:

一只白色的东北虎在捕猎!~~
一只1岁的东北虎在奔跑!~~
一只1岁的东北虎在吼叫!~~
ljy.inheritance.Tiger@4e81d783

===================================================

原创出处:http://blog.csdn.net/u012830807



对象创建过程,初始化顺序

Java虚拟机创建一个对象都包含以下步骤。 (1)给对象分配内存。 (2)将对象的实例变量自动初始化为其变量类型的默认值。 (3)初始化对象,给实例变量赋予正确的初始值。   对于以上第三个步...
  • u013127724
  • u013127724
  • 2015年04月08日 17:19
  • 1987

c++——继承类中的子对象和基类对象的初始化

为什么研究临时对象? 主要是为了提高程序的性能以及效率,因为临时对象的构造与析构对系统开销也是不小的,所以我们应该去了解它们,知道它们如何造成,从而尽可能去避免它们。临时对象是可以被编译器感知的。 ...
  • u011409995
  • u011409995
  • 2014年09月16日 14:25
  • 1614

【深入理解JVM】:Java类继承关系中的初始化顺序

Java类初始化的顺序经常让人犯迷糊,现在本文尝试着从JVM的角度,对Java非继承和继承关系中类的初始化顺序进行试验,尝试给出JVM角度的解释。非继承关系中的初始化顺序对于非继承关系,主类Initi...
  • u011080472
  • u011080472
  • 2016年05月06日 11:19
  • 4532

JAVA中继承时的初始化顺序

我们都知道继承是JAVA面向对象中的一个很重要的特性。那么你有没有思考过当我们使用继承这个特性的时候,程序是如何执行的呢?也就是说,继承的初始化顺序到底是怎么样的。接下来我就要用eclipse来试验一...
  • baidu_28312631
  • baidu_28312631
  • 2015年05月23日 15:23
  • 1130

c++中的类继承以及类初始化顺序

对于类以及类继承, 几个主要的问题: 1) 继承方式: public/protected/private继承. 这是c++搞的, 实际上继承方式是一种允许子类控制的思想. 子类通过public继...
  • u012398613
  • u012398613
  • 2013年12月11日 20:59
  • 772

java继承中初始化的顺序

java中子类继承了父类,其初始化的顺序是: 首先去看父类里面有没有静态代码块,如果有,它先去执行父类里面的静态代码块里面的内容;当父类的静态代码块里面的内容执行完毕后,接着去执行子类里面的静态代码块...
  • long636
  • long636
  • 2015年11月28日 21:18
  • 1055

JAVA面向对象 类的继承

本页面更新日期: 2016年07月30日前言 继承是面向对象的三大特征之一. 也是实现软件复用的重要手段. Java继承具有单继承的特点, 每个子类只有一个直接父类. 继承的特点 ...
  • tmdlife
  • tmdlife
  • 2016年07月26日 20:10
  • 1367

面向对象_继承案例和继承的好处与继承的弊端

/* 继承概述: 把多个类中相同的内容给提取出来定义到一个类中。 如何实现继承呢? java提供了关键字:extends 格多: //class 子类名,派生类名 extends 父类名,基类名,...
  • L1585931143
  • L1585931143
  • 2016年09月26日 22:13
  • 901

java中类继承的简单应用案例

问题描述: 某公司的雇员分为以下若干类: 1、Employee:这是所有员工总的父类,属性:员工的姓名,员工的生日月份。方法:getSalary(intmonth) 根据参数月份来确定工资,如果...
  • henu2009220176
  • henu2009220176
  • 2013年08月25日 10:20
  • 2297

Java基础总结之类与对象的初始化顺序

Java
  • crazyf2015
  • crazyf2015
  • 2015年06月27日 21:51
  • 2174
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:JAVA学习.继承环境下对象初始化
举报原因:
原因补充:

(最多只允许输入30个字)