您的位置:首页 > 编程语言 > Java开发

Java基础——构造函数、抽象类、父类构造方法初始化

2015-03-31 23:44 399 查看

Java基础——构造函数、抽象类、父类构造方法初始化

——小实例快速成长

构造函数:

1.在对象初始化时调用,方法名与类名完全相同;

2.构造函数可写,也可以不写;如果不写,系统将当做写了一个无参构造函数处理;

3.不能写返回值类型;

4.不能使用static修饰符。

5.一个类可以同时存在多个构造函数,这些构造函数之间呈重载关系——即函数名相同,参数类型或参数个数不同。

6.如果类中已写了构造函数,那在对象初始化时,系统将去搜索符合条件的对应构造函数。

7.特注:如果类中已写有参构造函数,没重载无参构造函数。在初始化时,却去调用无参构造函数(如例中的第3句代码),编译将无法通过,报错“实际参数列表和形式参数列表长度不同”。



抽象类(关键字abstract):

1.先继承,再使用;不能直接实例化,通过非抽象类继承后,才能实例化对象。

2.类中含有抽象方法,那这个类需要声明为抽象类。(含有抽象方法的类,必须为抽象类)

3.抽象方法:只声明,不含方法体;

4.在子类中必须实现父类(肯定是抽象类)所有抽象方法。



父类构造方法初始化(关键字super):

1.显示调用父类构造方法——用super();

2.若显示调用,必须将super()方法写在最前面;

3.若不显示调用,则要求父类必须写了‘无参构造函数’,系统会自动调用,否则报错“实际参数列表和形式参数列表长度不同”。

示例代码:

<pre name="code" class="java">public class TestBase
{
  public static void main(String[] args)
  {
      //Cat cat1 = new Cat();  //提示“实际参数列表和形式参数列表长度不同”的错误
      Cat cat2 = new Cat("波斯");
      Wolf wolf1 = new Wolf();
      Wolf wolf2 = new Wolf("蒙古狼");
      Tiger tiger = new Tiger();
      tiger.eat("肉");
  }
}
//抽象类
abstract class Animal
{
  String Food;
  protected String Name;

  //无参构造函数
  public Animal(){
	System.out.println("父类 无参构造方法!\n");
	}

  //有参构造函数
  public Animal(String name){
	this.Name = name;
	System.out.println(Name + "的 父类 有参构造方法!\n");
	}

  //抽象方法
  abstract void eat(String food);
}

//继承 父类Animal 
class Cat extends Animal
{
  //有参构造函数
  public Cat(String name){
	//初始化父类构造方法
	super(name);
	System.out.println("子类Cat有参构造函数!\n");
	}

  public void eat(String food) {
	//成员变量Food继承自父类——protected成员变量
	this.Food = food;
	System.out.println("猫以"+food+"为食!\n");
	}
}
//继承 父类Animal
class Wolf extends Animal
{
  //无参构造方法
  public Wolf(){
	//非显示调用父类构造方法,当程序使用本无参构造方法是,系统将自动调用父类无参构造方法
	
	//检验————无参构造函数调用的时机
	System.out.println("调用了Wolf类的无参构造方法!\n");
	}

  public Wolf(String name){
	//非显示调用父类构造方法,当程序使用本有参构造方法是,系统将自动调用父类无参构造方法
	
	//成员变量Name继承自父类——public成员变量
	this.Name = name;
	System.out.println("子类Wolf有参构造函数!\n");
	}
  public void eat(String food) {
	//成员变量Food继承自父类——protected成员变量
	this.Food = food;
	System.out.println("狼以"+food+"为食!\n");
	}
}

//继承 父类Animal
class Tiger extends Animal
{
  public void eat(String food) {
	this.Name = "东北虎";
	System.out.println("我的名字叫:" + Name + "; 我以" + food + "为食!\n");
	}
}



运行效果图:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐