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. ASP POST请求

    <!DOCTYPE html><html><head><meta http-equiv="Content-Type" content=&q ...

  2. imp dll时遇见的非常恶心的问题

    我需要导入dll库中这样一个函数VM661JTCPDLL_API int admin_login(sel_admin_ret* sel_admins, int num, char* admin_nam ...

  3. VS2015设置VS2017的“快速操作”快捷键Alt+Enter

    选项 -  环境 - 键盘 - 视图.快速操作和重构 添加“Alt+Enter (文本编辑器)”

  4. 《解读window核心编程》 之 进程

    1.         进程是执行文件的运行时形态.包括两部分:内核数据(对应内核对象).地址空间(包括执行文件代码和栈堆等动态内存). 2.         把VC的“系统-子系统”值删除掉,即不指定 ...

  5. 事务 ( 进程 ID 60) 与另一个进程被死锁在锁资源上,并且已被选作死锁牺牲品

    Select * FROM [TableName] With(NoLock) .....

  6. Codility---Brackets

    Task description A string S consisting of N characters is considered to be properly nestedif any of ...

  7. shell多线程(3)while循环

    start="2018-06-17" end="2018-07-01" min=`date -d "${start}" +%Y%m%d` m ...

  8. python常用删除库的方法

    本文记于初学py的时候,两年后补发. python常用库的安装方法一般有几种,比如: 1.编译过的exe包,直接无脑下一步就可以了. 2.pip install 库名,快速安装.自动匹配最新版本. 3 ...

  9. 每日一问:浅谈 onAttachedToWindow 和 onDetachedFromWindow

    基本上所有 Android 开发都会接触到 onCreate().onDestory().onStart().onStop() 等这些生命周期方法,但却不是所有人都会去关注到 onAttachXXX( ...

  10. win7 docker安装文件及安装问题

    最近在玩爬虫,需要装docker,但是官网对于win7版本,只支持docker tool box,在官网找了半天才找到安装包,特此上传百度网盘,方便各位下载 链接:https://pan.baidu. ...