5.4面向对象(构造函数的重载和初始化顺序)
来源:互联网 发布:淘宝隐形降权查询 编辑:程序博客网 时间:2024/06/05 16:52
1重载
构造函数的重载:
即写多个参数不一样的构造函数。构造函数的重载是为了实现构造方法的重用
规则是:参数不一样。
例:
/*person类*/class Person{//这些定义的变量就是Person类的静态属性String name;String sex;int age;//睡觉行为就是Person类的动态属性public void sleep(){System.out.println(name+"在睡觉");}//第一个构造函数public Person(String name){this.name = name;this.sex = "男";this.age = 999;}//第二个构造函数public Person(int age){//参数不一样this.name = "悟空";this.sex = "男";this.age = age;System.out.println(age+"岁的"+name+"在大闹天宫");}//第三个构造函数public Person(int age,String name){//参数不一样this.name = name;this.sex = "男";this.age = age;}}
调用时:只要输入相对应的参数就会用相对应的构造方法
public static void main(String[] args) {Person p = new Person("唐僧");//调用第一个构造函数Person p1 = new Person(999);//调用第二个构造函数Person p2 = new Person(999, "八戒");//调用第三个构造函数p.sleep(); //输出:唐僧在睡觉p2.sleep(); //输出:八戒在睡觉}
这里输出顺序是:
999岁的悟空在大闹天宫
唐僧在睡觉
八戒在睡觉
2初始化顺序
对象的初始化顺序是:
先初始化属性 -> 在初始化构造方法
看栗子:school类:
class School{//实例化一个Student,第一个Student s = new Student(1);//1,输出:student 1//带参数的构造方法public School(int i){System.out.println("school "+i);//3,输出:school 1}//实例化一个Student,第二个Student s2 = new Student(2);//2,输出:student 2}
student类:
class Student{//构造方法public Student(int i){System.out.println("student "+i);}}main入口:
public static void main(String[] args) {School sc = new School(1);}输出结果是:
student 1
student 2
school 1
解析:1,main方法中先new了一个school对象sc,所以就会去school中
2,school中先new了一个studen对象 s,所以又会去studen中
3,该类没有属性,直接执行构造函数后,执行里面的语句,输出:student 1
4,执行完后回到school类中,本来下一句应该执行构造函数输出school 1的,为什么会先输出student 2呢,因为对象的初始化是先初始化属性的,要先把属性初始化完,才初始化构造函数,所以往下又找到了studen对象s2,又进入了student
5,该类没有属性,直接执行构造函数后,执行里面的语句,输出:student 2
6,执行完后回到了school类,现在已经找不到没初始的属性,才会执行第6行的构造函数,输出:school 1。
0 0
- 5.4面向对象(构造函数的重载和初始化顺序)
- 1.面向对象--构造函数-定义 02-面向对象(构造函数-默认构造函数 03-面向对象--构造函数-构造函数和一般函数的区别 04-面向对象(构造函数-重载 05-面向对象(构造函数-内存图解)
- Lesson_for_java_day08--面向对象、重载和构造函数、this关键字的使用以及八大类在全局变量初始化中的值
- static 变量和static 构造函数 以及对象初始化顺序
- java运行过程,初始化的顺序,构造函数,变量作用域,反射机制,面向对象的特征
- C++构造函数中成员对象的初始化顺序
- C++中构造函数,成员对象的初始化顺序
- C++类对象数据成员的构造函数初始化顺序
- Objective-c语言_面向对象(便利初始化函数,构造器和多态的结合)
- java构造函数和初始化函数的执行顺序
- 面向对象--构造方法、重载和重写
- 面向对象编程基础 一 匿名对象,函数重载和构造函数
- 初始化代码块和构造函数的顺序
- 面向对象--初始化块 和构造器
- 构造函数和变量初始化顺序
- 构造函数、初始化列表的调用顺序
- 5第五天学习(面向对象(对象、类、接口、抽象类、构造函数、面向对象的三大特性、重写、重载))
- 面向对象第五课,方法重载,构造方法的重载
- Cassandra2.0以后的新API类和接口总结
- VO,PO,BO,QO, DAO ,POJO,的概念
- Java语言概述
- VS2005配置WinCE 5.0环境
- 后台经典ui
- 5.4面向对象(构造函数的重载和初始化顺序)
- 目标函数与损失函数的差别
- 分数化小数
- Binder VS socket
- Servlet及其使用
- UVA 11020 Efficient Solutions(STL,set)
- android Recyclerview使用解析!
- [HDU]1286 找新朋友 [欧拉函数]
- 基于canvas的二维码邀请函生成插件