Java 代码块与继承全攻略

原创 2018年01月10日 19:37:22

代码块

代码块 分类 :

1.局部代码块:限制变量的作用域 生命周期
书写位置 在方法中
2. 构造代码块(在开发中很少使用)
书写位置:在类中方法外
调用时机:如果你有构造代码块 系统会帮你调用 帮你在创建对象之前调用 每次创建对象都会调用
3. 静态代码块(被Static 修饰的)
静态代码块依赖类 随着类的加载而加载
注意:只加载一次(系统只调用一次 不管创建多少对象)
应用场景:加载驱动(数据库 JDBC)
4. 同步代码块(多线程)

代码举例:

public class Demo01 {
    public static void main(String[] args) {
        /*{
            System.out.println("我是局部代码块");
            }   */
        Person person = new Person();
        person.setAge(15);
        person.setName("james");
        person.sayHi();     
        Person person1 = new Person("Tom", 12);
        person1.sayHi();        
    }
}
    // 人名 年龄 有参无参 构造 sayHi
    class Person{
        private String name;    
        private int age;    
        //构造代码块
        {   
            // 每个对象都会调用同一样的方法 可以使用代码块
            System.out.println("哈哈");
        }
        static{
            System.out.println("我是静态代码块");
        }       
        // 有参无参构造方法
        public Person() {
            System.out.println("我是无参的构造方法");
        }

        public Person(String name, int age) {
            this.name = name;
            this.age = age;
            System.out.println("我是有参的构造方法");
        }
        // get/set方法
        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }

        public int getAge() {
            return age;
        }

        public void setAge(int age) {
            this.age = age;
        }
        //  sayHI方法
        public void sayHi() {
            System.out.println(name + " " +age);
        }

        public void sleep() {
            System.out.println("睡觉 就是爽");       
        }
    }

继承

继承特点:

1.减少你的代码量
2.让类与类之间产生关联(产生父子关系)
3.继承使用的关键字 : extends

注意:1.继承时可以把多个类中相同的功能或方法 抽取出来
         抽象构造一个类出来 把这些类建立继承关系
     2.建立继承关系的同时 一定要符合逻辑(切记不要为了继承而继承)
       如果是继承关系 一定符合 什么是什么  
     3.java只允许单继承(多继承可以使用接口间接实现)
     4.java 中允许多层继承(爷爷 父亲 儿子 孙子 ...)
     5.java中最顶层的父类(最基础) Object类
     6.如果这个类没有写继承哪个父类 默认继承Object类 
     7.如果使用共有方法或者类 可以当前继承中创建最顶端的类来使用
     8.如果要使用特殊的方法 就创建当前继承中最末端的类来使用
     9.构造方法不能被继承 为了保障继承的完整性 在你创建子类对象的
 时候  如果不调用 父类的构造方法 系统会帮你调用 父类无参构造方法

super 关键字

代表是父类的对象 super 调用方法 super.方法(); super();调用父类构造方法 this(); 调用本类构造方法

代码举例:

public class Demo05 {
    public static void main(String[] args) {
        TestB testB = new TestB();
        testB.fun();
    }
}

    class TestA{
        int num1 = 10;
        int num2 = 20;
        //无参构造方法注释
        //  public TestA() {
    //  }

        public TestA(int num1, int num2) {
            super();
            this.num1 = num1;
            this.num2 = num2;
        }
        public void sayHi() {
            System.out.println("jaja");
        }
    }
    //继承TestA类
    class TestB extends TestA{
        int num1 = 30;  

        // 子类的构造方法中 如果你什么都不写 会默认调父类无参构造
            //如果父类 没有无参的构造方法 就证明 父类当中一定有有参方法
            //无论有参 还是无参 子类的构造方法中必须调用一个
            //如果没有调用无参的, 必须要手动调用一个有参构造方法
        public TestB(int num1, int num2) {
            super(num1, num2);
        }
        public void fun() {
            //使用this 时 会现在本类中寻找该属性 没找到 就去父类中找
            System.out.println(this.num1 + " " + this.num2);
            System.out.println(super.num1);
        //  this.sayHi();
        //  super 调用方法  super.方法();  super();调用父类构造方法  this(); 调用本类构造方法
        //  super.sayHi();
        }
    }

方法的重写

方法声明 完全一致的时候叫方法重写
方法的重写建立在类与类之间继承关系(子类重写父类的方法)
Override 和 Overload 的区别
1.重写 前提需要继承关系
重载 在同一个类里
2.重写 需要方法的声明完全一致
重载 只跟参数有关

@Override
            public String toString() {
                // TODO Auto-generated method stub
                return super.toString();
            }

面试题讲解(一) java继承、静态代码块、非静态代码块的使用

工作近三年了,虽然也做过一些项目,日常bianm
  • fengge34
  • fengge34
  • 2014年04月24日 10:56
  • 1244

JAVA继承关系中静态代码块、非静态代码块的执行顺序

类的代码在初次使用时才加载(每个类的编译代码都存在于它自己的独立文件中,.class文件),是指加载发生在创建类的第一个对象的时候,但是当访问static方法和static域的时候,也会发生加载(构造...
  • davistang
  • davistang
  • 2015年03月18日 23:09
  • 1454

在继承中的问题,关于静态代码块,子类和父类的静态代码块的执行情况

当父类与子类都有静态代码块和构造函数的时候,执行顺序如下: 父类静态代码块 > 子类静态代码块 Java虚拟机加载类时,就会执行该块代码。 父类构造函数 > 子类构造函数 (先有父亲,后有孩子) ...
  • LiMing_0820
  • LiMing_0820
  • 2016年10月17日 20:38
  • 1562

小东吖 之 java 代码块 类的继承 final关键字

一.代码块1.什么是代码块? 一对{ } 2.代码块的分类以及特点 1.局部代码块 局部代码块定义在方法中,用大括号{ }包含。例如在method()方法中创建一个局部代码块public v...
  • qq_34936541
  • qq_34936541
  • 2017年12月07日 21:02
  • 85

JAVA 代码块 继承

代码块: 一对大括号括起来的代码 种类: 1:局部代码块 位置: 方法中 作用 限制了局部变量的生命周期(作用域问题)2:构造代码块 位置: 在类中 方法外 ...
  • pwxshenqiu
  • pwxshenqiu
  • 2017年12月07日 22:42
  • 17

Java 代码块的含义理解

如下: 一种带有static static{     //代码内容     //........     //代码结束 } 还有就是花括号前面啥也没有的。 {     //代码内...
  • cloudeagle_bupt
  • cloudeagle_bupt
  • 2013年01月25日 15:41
  • 461

java 代码块

//Person p = new Person("zhangsan");这句话做了什么事情? //1.因为new 用到了Person.class,所以会先找到Person.class文...
  • Joakim_Zhou
  • Joakim_Zhou
  • 2015年03月01日 09:47
  • 379

Java 代码块的分类

代码块代码块分类1.局部代码块: 限制变量作用域(生命周期)书写位置: 在方法中2.构造代码块:(开发中 很少使用)书写位置: 在类中 方法外调用时机:如果你有构造代码块 系统帮你调用帮你在创建对象之...
  • Coooooc
  • Coooooc
  • 2018年01月10日 21:04
  • 16

Java 代码块、成员变量初始化、构造函数初始化顺序

一、对于实例变量 实例变量初始化过程分析 初始实例变量的有: ① 实例变量定义时初始化、 ② 非静态代码块初始化、 ③ 构造函数实例变量初始化 package cn.daywan.test; ...
  • Only_Wan
  • Only_Wan
  • 2016年11月23日 16:51
  • 1282

java 代码块

用{}括起来的一段代码 普通代码块:在方法或语句中定义的代码块 构造块:直接写在类中的代码段 静态代码块:写在类中的用static声明的构造块示例代码package com.ws.block;clas...
  • cs_wangshuo
  • cs_wangshuo
  • 2017年03月07日 11:32
  • 93
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java 代码块与继承全攻略
举报原因:
原因补充:

(最多只允许输入30个字)