Java学习笔记之---构造方法

(一)构造方法的特性
  1. 构造方法不能被对象单独调用
  2. 构造方法与类同名且没有返回值
  3. 构造方法只能在对象实例化的时候被调用
  4. 当没有指定构造方法时,系统会自动添加无参的构造方法,当有指定的构造方法时,系统不会再自动添加无参的构造方法
  5. 一个类可以有多个构造函数
  6. 子类的构造默认调用父类的构造
  7. 虽然父类的构造方法不能被继承,不能被重写,但是会影响子类对象的实例化
  8. 子类默认调用父类的无参构造方法,可以通过super调用父类允许访问的其他构造方法
(二)构造方法

(1)带参构造方法

public 构造方法名(数据类型 形式参数1,数据类型 形式参数2){   }

public Animal(String name){

    this.name=name;

    System.out.println("我是有参构造方法1");

}

public Animal(String name,int age ){

    this.name=name;

    this.age=age;

    System.out.println("我是有参构造方法2");

}

(2)无参构造方法

public 构造方法名(){   }

public Animal(){

    System.out.println("我是无参构造方法");

}
(三)构造方法的调用

通过实例化对象来调用

 class AnimalTest{

    public static void main(String[] args){

        Animal a=new Animal("aa",1);

        System.out.println(a.name);

    }

}
(四)构造方法实例

public class Animal {
private String name;
int age;
{
System.out.println("我是构造代码块");
}
public Animal(){
System.out.println("我是无参构造方法");
}
public Animal(String name){
        this.setName(name);
      System.out.println("我是有参构造方法1");
}
public Animal(String name,int age ){
this.setName(name);
this.age=age;
System.out.println("我是有参构造方法2");
}
public void setName(String nmae){
this.name=name;
}
public String getName(){
return this.name;
}
}
class AnimalTest{
public static void main(String[] args){
Animal a=new Animal("aa",1);
System.out.println(a.getName+":"+a.age);
Animal b=new Animal("bb");
System.out.println(b.getName());
Animal c=new Animal(); } }
运行结果:
我是有参构造方法2
aa:1
我是有参构造方法1
bb
我是无参构造方法
(五)构造代码块
  1. 构造代码块在成员变量下面
  2. 构造代码块比构造方法先执行
 
 public class Animal {

    String name;

    int age;

    {

        System.out.println("我是构造代码块");

    }

    public Animal(){

        System.out.println("我是无参构造方法");

    }

    public Animal(String name){

        this.name=name;

        System.out.println("我是有参构造方法1");

    }

    public Animal(String name,int age ){

        this.name=name;

        this.age=age;

        System.out.println("我是有参构造方法2");

    }

}

class AnimalTest{

    public static void main(String[] args){

        Animal a=new Animal("aa",1);

        System.out.println(a.name+":"+a.age);

        Animal b=new Animal("bb");

        System.out.println(b.name);

        Animal c=new Animal();

    }

}

运行结果:

我是构造代码块

我是有参构造方法2

aa:1

我是构造代码块

我是有参构造方法1

bb

我是构造代码块

我是无参构造方法

Java学习笔记之---构造方法的更多相关文章

  1. 1.3(java学习笔记)构造方法及重载

    构造方法,用于对象的初始化,在创建对象时被自动调用的特殊方法.构造方法名称与类名一致,通过new调用. 下面通过代码来详细讲解 public class Point { int x, y; publi ...

  2. Java学习笔记之——构造方法

    构造方法:方法名和类名相同且没有返回值 1.作用 创建对象 对象初始化 2.普通方法的结构 权限修饰符 返回值类型 方法名(形参){ 方法体: } 3. 构造方法的结构 (1)结构 权限修饰符 方法名 ...

  3. 0035 Java学习笔记-注解

    什么是注解 注解可以看作类的第6大要素(成员变量.构造器.方法.代码块.内部类) 注解有点像修饰符,可以修饰一些程序要素:类.接口.变量.方法.局部变量等等 注解要和对应的配套工具(APT:Annot ...

  4. Java学习笔记(04)

    Java学习笔记(04) 如有不对或不足的地方,请给出建议,谢谢! 一.对象 面向对象的核心:找合适的对象做合适的事情 面向对象的编程思想:尽可能的用计算机语言来描述现实生活中的事物 面向对象:侧重于 ...

  5. 0028 Java学习笔记-面向对象-Lambda表达式

    匿名内部类与Lambda表达式示例 下面代码来源于:0027 Java学习笔记-面向对象-(非静态.静态.局部.匿名)内部类 package testpack; public class Test1{ ...

  6. 0025 Java学习笔记-面向对象-final修饰符、不可变类

    final关键字可以用于何处 修饰类:该类不可被继承 修饰变量:该变量一经初始化就不能被重新赋值,即使该值跟初始化的值相同或者指向同一个对象,也不可以 类变量: 实例变量: 形参: 注意可以修饰形参 ...

  7. 《Java学习笔记(第8版)》学习指导

    <Java学习笔记(第8版)>学习指导 目录 图书简况 学习指导 第一章 Java平台概论 第二章 从JDK到IDE 第三章 基础语法 第四章 认识对象 第五章 对象封装 第六章 继承与多 ...

  8. 0013 Java学习笔记-面向对象-static、静态变量、静态方法、静态块、单例类

    static可以修饰哪些成员 成员变量---可以修饰 构造方法---不可以 方法---可以修饰 初始化块---可以修饰 内部类(包括接口.枚举)---可以修饰 总的来说:静态成员不能访问非静态成员 静 ...

  9. 20145330第八周《Java学习笔记》

    20145330第八周<Java学习笔记> 第十五章 通用API 通用API 日志:日志对信息安全意义重大,审计.取证.入侵检验等都会用到日志信息 日志API Logger:注意无法使用构 ...

随机推荐

  1. MVC EF Model First

    1 在Models下新建实体数据模型Model.edmx 2 在Model.edmx中点右键建立各个实体,增加Scalar Property 3 空白处点右键,添加关系,勾选增加外键 4 保存Mode ...

  2. NOPI 基本读写

    //获取cell的数据,并设置为对应的数据类型 public object GetCellValue(ICell cell) { object value = null; try { if (cell ...

  3. 零元学Expression Blend 4 - Chapter 2 入门界面简介

    原文:零元学Expression Blend 4 - Chapter 2 入门界面简介 在这篇教学我将会介绍Expression Blend 4的基本界面,虽然有些网站已经有做了介绍,为了整个教学的完 ...

  4. DataTable 更改在有数据列的类型方法

    原文:DataTable 更改在有数据列的类型方法 /// <summary> /// 修改数据表DataTable某一列的类型和记录值(正确步骤:1.克隆表结构,2.修改列类型,3.修改 ...

  5. Android零基础入门第55节:ImageSwitcher和TextSwitcher使用

    原文:Android零基础入门第55节:ImageSwitcher和TextSwitcher使用 上一期我们了解了ViewAnimator组件和ViewSwitcher组件的使用,你都掌握了吗?本期一 ...

  6. 让VC2012生成的程序支持XP系统(修改mkspecs\win32-msvc2012\qmake.conf,QT的DLL都是支持XP的,只与EXE有关)good

    如果用的编译器是VC2012以上,那么默认生成出的程序是不能运行在XP系统上的.所以需要修改链接参数 我们要做的是修改qmake.conf文件中的参数,文件路径根据开发环境不同而不同下面以5.1.1 ...

  7. 转载 《我用 TypeScript 语言的七个月》

    快速使用Romanysoft LAB的技术实现 HTML 开发Mac OS App,并销售到苹果应用商店中.   <HTML开发Mac OS App 视频教程> 土豆网同步更新:http: ...

  8. 将QT开发的界面程序封装成DLL,在VC中成功调用(必须有消息循环,所以使用了QTWinmigrate,附CSDN可下载的Demo)

    最近手头的一个项目需要做一个QT界面,并且封装成DLL,然后再动态调用DLL给出的接口函数,使封装在DLL内部的QT界面跑起来,在网上查了很多资料,今天终于成功了,经验不敢独享,因为CSDN给了我很多 ...

  9. 使用C++还是QML(QML容易使用和维护,效果好)

    本质上,Qt 是一个C++类库.在引入 QML 以前,所有的开发都是基于 C++ 的,但到了 Qt 5,QML 和 Qt Quick 成为了 Qt 的核心之一,导致很多初学者在犹豫是否还需要学习 C+ ...

  10. TopFreeTheme精选免费模板【20130626】

    有一段时间没有发布的模板了,相信很多喜欢新模板的朋友有点焦急了!还好,今天我今天整理了13个最新的模板,主要是WordPress的,另外3个是关于Joomla的模板,他们分别是游戏主题.俱乐部主题以及 ...