面向对象之构造器的知识点和演示
来源:互联网 发布:天使之城淘宝店不在了 编辑:程序博客网 时间:2024/06/06 14:28
1.构造器(或构造方法):constructor. 跟方法没有从属关系,是独立的
构造器的作用:①创建类的对象。
②提供创建的对象的属性的初始化
2.构造器的特点修饰符 类名 (参数列表) {
初始化语句;
}
1.它具有与类相同的名称,一般权限public(默认与类的权限一样)。
2.它不声明返回值类型。(与声明为void不同)
3.不能被static、final、synchronized、abstract、native修饰,不能有return语句返回值
3.构造器使用说明:* 1.当我们没显示的定义类的构造器时,系统会默认提供一个空参的构造器。
* 2.如何定义类的构造器: 权限修饰符 类名(形参列表){ }
* 3.一个类中可以定义多个构造器,彼此之间构成重载
* 4.一旦我们显示的提供类的构造器,那么系统就不再提供默认的空参的构造器了。类中, 一定会有构造器!
5.Java语言中,每个类(包括抽象类)都至少有一个构造器
4.构造器重载
1.类的多个构造器构成重载,也为对象的创建提供了更加灵活的选择了。
2.同一类中用this(形参)来调用重载的构造器的this(形参)要放在首行。
3.(继承时,子类用super(形参)形式来调用父类中的构造器,但并非重载了)
5.给属性赋值顺属性赋值的顺序:①-②-③-④
①默认初始化
②显式初始化
③构造器中初始化
④通过"对象.属性"或"对象.方法"的方式赋值序
二:关键字this
1.this可以调用的结构:属性、方法、构造器
this:表示当前对象或当前正在创建的对象
它在方法内部使用,即这个方法所属对象的引用;
它在构造器内部使用,表示该构造器正在初始化的对象
2.this调用属性、方法:
-->我们在方法内部,可以通过"this.属性"或"this.方法"的方式,调用当前对象的属性或方法。但是通常情况下,我 们习惯 于省略"this.".但是,如果方法的形参的变量名和类的属性相同,那么我们就必须显式的使用“this.”的方式,表明我们调用的是当前类对象的属性,而非形参的变量。
-->我们在构造器中,可以通过“this.属性”"或"this.方法"的方式,调用当前正在创建的对象的属性或方法。但是通常情况下,我们习惯于省略"this.".但是,如果构造器的形参的变量名和类的属性相同,那么我们就必须显式的使用“this.”的方式,表明我们调用的是属性,而非形参的变量。
3.this调用构造器:
格式:this(形参列表):调用指定形参列表的构造器
* 说明:1.构造器中通过“this(形参列表)”调用的构造器,不能是自己调用自己!
* 2.如果一个类中声明了n个构造器,那么最多只能有 n - 1个构造器中使用“this(形参列表),至少一个
不用 this().
* 3.要求“this(形参列表)”必须声明在构造器的首行!
代码Eample:
public class TestPerson {
public static void main(String[] args) {
Person p1 = new Person();
System.out.println(p1.getName() + ":" + p1.getAge());
Person p2 = new Person("BB",23);
int temp = p2.compare(p1);
System.out.println(temp);
}
}
class Person{
private String name;
private int age;
public Person(){
this.name = "AA"; //this 表示本题目中new的对象P2
this.age = 1;
}
public Person(String name){
this(); //表示调用上面空参构造器,不能写成this Person();
this.name = name;
}
public Person(String name,int age){
this(name); //相当于this.name =name; 只是直接调用上面的构造器。
this.age = age;
}
public String getName() {
return name; //根return this.name结果一样,只是神略了。
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public void eat(){
System.out.println("eating");
}
public void sleep(){
System.out.println("sleeping");
this.eat();//表示调用当前对象的eat()方法,跟eat():结果一样。一般要写this.eat();
}
//比较当前对象与形参的对象的age谁大。
public int compare(Person p){
if(this.age > p.age)
return 1;
else if(this.age < p.age)
return -1;
else
return 0;
}
}
- 面向对象之构造器的知识点和演示
- java学习之路 之 面向对象编程-面向对象特征之一(封装和隐藏)级类的成员之三(构造器、构造方法)
- 面向对象之代码块和继承代码演示
- 面向对象的知识点
- JAVA 面向对象之深入构造器
- 面向对象--初始化块 和构造器
- 面向对象和原型知识点
- 面向对象--构造器
- 1.面向对象--构造函数-定义 02-面向对象(构造函数-默认构造函数 03-面向对象--构造函数-构造函数和一般函数的区别 04-面向对象(构造函数-重载 05-面向对象(构造函数-内存图解)
- 面向对象之构造函数
- 面向对象之构造方法
- 面向对象之构造函数
- 面向对象之构造函数和析构函数之一
- 面向对象之拷贝构造函数和赋值函数之一
- 面向对象之构造方法和API查询
- 达内课程-面向对象之构造方法和重载
- Java学习之面向对象二-----方法的重载和构造方法
- 黑马程序员之面向对象一些 重要的知识点
- qxwz测试
- MyBatis第一讲学习笔记,mybatis入门基础操作
- 运行时异常与一般异常有何异同
- 共享内存
- 中间高两边低排序
- 面向对象之构造器的知识点和演示
- Mysql系列一 windows 环境下安装解压版mysql
- 常用控件
- c语言实现strcpy函数
- CENTOS7 升级到Python3 并安装Django1.11
- PAT (Advanced Level) Practise 1114 Family Property (25)
- stm32 在windows下 使用gcc 编译的makefile脚本
- 环形队列的实现
- USACO-Section1.3 milk[贪心]