Java 匿名函数、构造方法、构造代码块、方法重载与方法重写

匿名函数

Java Lambda 表达式(又名闭包(Closure)/匿名函数)

构造方法

构造方法的作用:给对象进行初始化,对象创建时初始化属性值

创建构造方法

  • 构造方法没有返回类型,方法名和类名保持一致
  • 构造方法不是我们手动调用的,是对象被创建的时候jvm(java虚拟机)调用的
  • 如果一个类我们没有给它定义构造方法,jvm(java虚拟机)在编译的时候 会给这个类默认添加一个无参构造方法
  • 如果自己定义了构造方法,那么jvm不会再创建无参构造方法
  • 创建对象的时候,有几个参数,就要有相应的构造方法,也是对应的要有几个参数

格式

  • 修饰符 类名(参数列表){}
  • 直接类名 (参数列表){}

方法重载

方法是可以重名的,我们把这种重名的方法叫 方法的重载

注意

  • 方法名一样才叫方法重载
  • 任何方法(普通方法,构造方法)都可以实现方法重载
  • 参数列表要保证顺序 或者 个数是不一样的
    例如:
  • Person (String a , int b);
  • Person ( int b, String a);//顺序不一样
  • Person (String a , int b,String c);//个数不一样

方法重写

Java程序中,类的继承关系可以产生一个子类,子类继承父类,它具备了父类所有的特征,继承了父类所有的方法和变量。子类可以定义新的特征,当子类需要修改父类的一些方法进行扩展,增大功能,程序设计者常常把这样的一种操作方法称为重写,也叫称为覆写覆盖

在重写方法时,需要遵循以下的规则:

  • 父类方法的参数列表必须完全与被子类重写的方法的参数列表相同,否则不能称其为重写而是重载
  • 父类的返回类型必须与被子类重写的方法返回类型相同,否则不能称其为重写而是重载
  • Java中规定,被子类重写的方法不能拥有比父类方法更加严格的访问权限
  • 由于父类的访问权限修饰符的限制一定要大于被子类重写方法的访问权限修饰符,而private权限最小。所以如果某一个方法在父类中的访问权限是private,那么就不能在子类中对其进行重写
  • 在继承过程中如果父类当中的方法抛出异常,那么在子类中重写父类的该方法时,也要抛出异常,而且抛出的异常不能多于父类中抛出的异常(可以等于父类中抛出的异常)

例如:父类的一个方法申明了一个检查异常IOException,在重写这个方法时就不能抛出Exception,只能抛出IOException的子类异常,可以抛出非检查异常

方法重写与方法重载的区别

区别点 方法重载 方法重写(覆盖)
英文 Overloading Overiding
定义 方法名称相同,参数的类型或个数不同 方法名称、参数类型、返回值类型全部相同
定义 对权限没有要求 被重写的方法不能拥有更严格的权限
范围 发生在一个类中 发生在继承类中

构造代码块

构造代码块作用:给对象统一初始化。(对象创建之前都会走这个方法)

注意

  • 构造代码块必须写在成员变量(属性)的位置
  • 对象创建之前都会走这个方法
  • java中编译器编译java源文件的时候,会把成员变量的声明放到最前面
  • 成员变量的初始化都是在构造方法中执行的,一旦经过java编译器编译,构造代码块的方法会移到构造函数中执行,放在构造函数的最前面执行
  • 如果没有构造方法,只有成员变量初始化和构造代码块,按照当前代码的顺序来执行

代码块分为三类:

  • 构造代码块 : {...}
  • 局部代码块:写在方法中,也是以大括号来表示
  • 静态代码块:static{...}

参考代码:

User.java

package com.DesignPattern.test;

/**
 * Created by shun_c on 2017/7/3.
 */
public class User {

    public String name;
    public static int age;

    {
        age = 21;
        System.out.println("user in 构造代码块 前 " + age);
    }

    static {
        age = 111;
        System.out.println("user in 静态代码块 " + age);
    }

    public User(){
        age = 31;
        System.out.println("user in 构造方法 " + age);
    }

    public void use(){
        age = 41;
        System.out.println("user in use 方法 " + age);
    }

    public static void main(String [] args){

        User user = new User();
        user.age = 51;
        System.out.println("user in main " + user.age);
        user.use();
    }

    {
        age = 61;
        System.out.println("user in 构造代码块 后 " + age);
    }
}

Student.java

package com.DesignPattern.test;

/**
 * Created by shun_c on 2017/7/3.
 */
public class Student extends User {

    {
        age = 71;
        System.out.println("student in 构造代码块 前 " + age);
    }

    static {
        age = 121;
        System.out.println("student in 静态代码块 " + age);
    }

    public Student(){
        age = 81;
        System.out.println("student in 构造方法 " + age);
    }

    public void use(){
        age = 91;
        System.out.println("student in use 方法 " + age);
    }

    {
        age = 101;
        System.out.println("student in 构造代码块 后 " + age);
    }

    public static void main(String [] args){
        Student student = new Student();
        System.out.println("student in main " + student.age);
        student.use();
    }
}

run : User.java

运行User.jpg

run : Student.java

运行Student.jpg
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,874评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,102评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,676评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,911评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,937评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,935评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,860评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,660评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,113评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,363评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,506评论 1 346
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,238评论 5 341
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,861评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,486评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,674评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,513评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,426评论 2 352

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,621评论 18 399
  • 一:java概述:1,JDK:Java Development Kit,java的开发和运行环境,java的开发工...
    ZaneInTheSun阅读 2,649评论 0 11
  • 总有人说——假如有后悔药该多好。却不知正是过往的经历铸就了现在的你,路是一步一步走过来的,无论此刻的你正在经历什么...
    印子说阅读 363评论 0 1
  • 投资的刚需是避险 李笑来 2016年12月19日 相信你从小到大,一直被这样洗脑过——反正我自己确实是被这么洗过的...
    格式化_001阅读 215评论 0 0
  • 写点什么呢,下班回家,就是忙着做晚饭,收拾碗筷,稍微的做一下卫生,在看一下朋友圈,逛一下微博,一晃就这个点了。 一...
    纤纤来了阅读 168评论 0 0