黑马程序员------毕老师视频笔记第五天------面向对象(构造函数)

论坛 期权论坛 脚本     
匿名技术用户   2020-12-27 23:09   11   0

---------------------- ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------

构造函数

特点:①函数名与类名相同②不用定义返回值类型③不可以写return语句

作用:给对象进行初始化

注意:①默认构造函数的特点②多个构造函数是以重载的形式存在的

*对象一建立就会调用与之对应的构造函数。

*现实生活中的对象,一出现就会具有一些基本特性,这些特性就需要初始化。

*当一个类中没有定义构造函数时,系统会默认给该类加入一个空参数的构造函数。

*当在类中自定义了一个构造函数以后,不管有没有参数,默认的构造函数就没有了。

*一个类中可以有多个构造函数,构造函数也是函数,可以重载。

*构造函数和一般方法在写法上有不同

*构造函数和一般方法在运行上有不同:

构造函数是在对象一建立就运行,给对象初始化

一般方法是对象调用才执行,是给对象具备的功能

构造函数只在定义对象时运行一次

一般方法对象可以调用多次

什么时候定义构造函数:分析事物时,该事物一出现就具备一些特性或行为,就要定义构造函数


构造代码块

作用:给对象进行初始化,对象一建立就运行,优先于构造函数执行

和构造函数的区别:

构造代码块是给所有对象进行统一初始化

构造函数是给对应的对象进行初始化


*构造函数是可以私有化的,私有化之后,不能创建对应的对象,如果一个类中所有的构造函数都私有化,这个类不能创建对象。


class Person
{
 private String name;
 private int age;

 {
  cry();
 }

 Person()
 {
  System.out.println("A: name="+name+"; age="+age);
 }
 Person(String n)
 {
  name = n;
  System.out.println("A: name="+name+"; age="+age);
 }
 Person(String n,int a)
 {
  name = n;
  age = a;
  System.out.println("A: name="+name+"; age="+age);
 }
 public void cry()
 {
  System.out.println("crying!!!");
 }
}
class PersonDemo
{
 public static void main(String[] args)
 {
  Person p1 = new Person();
  Person p2 = new Person("lisi");
  Person p3 = new Person("wangwu",10);
  
  p1.cry();
 }
}


结果

ps:每创建一个对象,先执行构造代码块,p1没有给name和age赋初值,所以都是默认值(String默认值为null,int默认值为0),若是注释掉Person(){...},编译时会报错,p1找不到对应的构造函数。

---------------------- ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:7942463
帖子:1588486
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP