构造器的特征
它具有与类相同的名称
它不声明返回值类型。(与声明为void不同)
不能被static、final、synchronized、abstract、native修饰,不能有 return语句返回值
构造器的作用:创建对象;给对象进行初始化
如:Order o = new Order(); Person p = new Person(“Peter”,15); 如同我们规定每个“人”一出生就必须先洗澡,我们就可以在“人”的 构造器中加入完成“洗澡”的程序代码,于是每个“人”一出生就会自 动完成“洗澡”,程序就不必再在每个人刚出生时一个一个地告诉他们 要“洗澡”了
语法格式:
修饰符 类名 (参数列表) { 初始化语句;}
举 例:public class Animal {
private int legs;
// 构造器 public Animal() {
legs = 4; }
public void setLegs(int i) {
legs = i; }
public int getLegs() {
return legs;}
}
创建Animal类的实例:Animal a = new Animal(); 调用构造器,将legs初始化为4。
根据参数不同,构造器可以分为如下两类:
隐式无参构造器(系统默认提供)
显式定义一个或多个构造器(无参、有参)
注 意:
Java语言中,每个类都至少有一个构造器
默认构造器的修饰符与所属类的修饰符一致
一旦显式定义了构造器,则系统不再提供默认构造器
一个类可以创建多个重载的构造器
父类的构造器不可被子类继承
课程比代码如下:
/*
* 类的结构之三:构造器(或构造方法、constructor)的使用
* construct:建设、建造。 construction:CCB constructor:建设者
*
* 一、构造器的作用:
* 1.创建对象
* 2.初始化对象的信息
*
*
* 二、说明:
* 1.如果没有显式的定义类的构造器的话,则系统默认提供一个空参的构造器
* 2.定义构造器的格式:权限修饰符 类名(形参列表){}
* 3.一个类中定义的多个构造器,彼此构成重载
* 4.一旦我们显式的定义了类的构造器之后,系统就不再提供默认的空参构造器
* 5.一个类中,至少会有一个构造器。
*/
public class PersonTest {
public static void main(String[] args) {
//创建类的对象:new + 构造器:Person()
Person p = new Person();
p.eat();
Person p1 = new Person("Tom");
System.out.println(p1.name);
}
}
class Person{
//属性
String name;
int age;
//构造器(可以建多个构造器)
//此构造器用来创建对象
public Person(){
System.out.println("Person().....");
}
//此构造器用来初始化对象的信息
public Person(String n){
name = n;
}
//
public Person(String n,int a){
name = n;
age = a;
}
//方法
public void eat(){
System.out.println("人吃饭");
}
public void study(){
System.out.println("人可以学习");
}
}
练习:
* 1.创建程序,在其中定义两个类:Person和PersonTest类。定义如下:
* 用setAge()设置人的合法年龄(0~130),用getAge()返回人的年龄。
*
* 2.练习2:
* 2.1. 在前面定义的Person类中添加构造器,利用构造器设置所有人的age属性初始值都为18。
* 2.2. 修改上题中类和构造器,增加name属性,使得每次创建Person对象的同时初始化对象的age属性值和name属性值。
源码一:
package com.atcording.exer;
/*
* 1.创建程序,在其中定义两个类:Person和PersonTest类。定义如下:
* 用setAge()设置人的合法年龄(0~130),用getAge()返回人的年龄。
*
* 2.练习2:
* 2.1. 在前面定义的Person类中添加构造器,利用构造器设置所有人的age属性初始值都为18。
* 2.2. 修改上题中类和构造器,增加name属性,使得每次创建Person对象的同时初始化对象的age属性值和name属性值。
*
*/
public class Person {
private int age;
private String name;
public Person(){
age = 18;
}
public Person(String n,int a){
name = n;
age = a;
}
public void setAge(int a){
if(a < 0 || a > 130){
// throw new RuntimeException("传入的数据非法!");//后面学此语句
System.out.println("传入的数据非法!");
return;
}
age = a;
}
public int getAge(){
return age;
}
public void setName(String n){
name = n;
}
public String getName(){
return name;
}
}
源码二:
package com.atcording.exer;
/*
* 在PersonTest类中实例化Person类的对象b,
* 调用setAge()和getAge()方法,体会Java的封装性。
*
*/
public class PersonTest {
public static void main(String[] args) {
Person p1 = new Person();
// p1.age = 1;编译不通过
p1.setAge(12);
System.out.println("年龄为:" + p1.getAge());
Person p2 = new Person("Tom", 21);
System.out.println("name = " + p2.getName() + ",age = " + p2.getAge());
}
}
今天的文章java的构造器和构造方法_java构造器可以被重写吗分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:http://bianchenghao.cn/78696.html