构造方法,成员变量,静态,继承
一、构造方法
什么是构造方法,当我们要创建一个对象的时候就会使用到构造方法,可以实现对象的创建及对象信息的初始化工作 构造方法的使用及细节 1.构造方法的语法格式 访问修饰符 类名(参数列表){ 方法体; } 2.默认构造方法 3.带参的构造方法 4.默认特性,系统默认会给我们提供一个无参的构造方法 //系统默认会生成一个无参的构造方法 //1,方法不要写任何返回值 //2,方法名要跟类名一模一样 //3,细节:当你自己已经写了构造方法,系统将不会再提供默认的构造方法
|
二、考点:成员变量和局部变量的区别
成员变量和局部变量的区别?笔试考点 成员变量: 定义在类中,跟成员方法同级别 局部变量: 方法的参数,或者定义在方法内的变量 (1),位置不同,导致作用域不同 (2),生命周期不同 (3),内存的位置不同(后面讲对象内存图时再讲) (4),初始值不同,局部变量默认不给初始化,需要你自己去初始化,才能使用 (5),奇葩考点,成员变量和局部变量同名的情况,考优先级问题 |
1. Static
1,关注其语法特点 2,关注其使用场景 //static 修饰的变量,一般会定义为public l 静态变量 静态变量所有对象共享一份,非静态的成员变量,每个对象独享一份 l 静态变量和普通成员变量的区别(局部变量和成员变量的区别) n 归属不同 u 成员变量:对象 u 静态变量:类 n 调用的方式不同 u 成员变量:对象.成员变量 u 静态变量:类名.静态变量 n 内存出现的时机不同 u 成员变量:对象创建 u 静态变量:load 类的字节码文件,优先于成员变量 n 内存的位置不同 u 成员变量:堆 u 静态变量:方法区-静态区 l 静态代码块 执行时机:当我们的类被加载的时候就会被执行,不管是否创建对象 执行次数:整个过程仅执行一次,不管创建多少对象都只执行一次 l 静态方法 可以通过对象或者类名来调用,但是建议用类名来调用 静态: * 1,静态变量,所有对象共享一份,访问方式:类名.变量名 * 2,静态代码块,类加载的时候就自动执行,而且只执行一次 * 3,静态方法,访问方式:类名.方法名()
实际应用场景: 假设现在项目中有多处地方需要做状态判断,以作为下一步操作的依据。 创建工具类 (1),解决数据匹配问题 (2),直接通过类名调用方法,无需创建对象 |
2. 继承-语法
l 继承解决了什么样的问题? 解决了多个类代码重复的问题 l Java里面实现继承的语法是怎么样的? A extends B; 1,掌握继承的基本使用 2,掌握继承的语法细节(笔试题) l 分析一个子类的实例化过程?跟父类有什么样的关系?从构造方法来观察 答:先调用父类的构造方法(默认是调用父类的无参构造方法),再调用子类本身的构造方法 l 总结继承中,构造方法的注意事项(Super关键字的使用) 答:子类继承父类时,默认是调用父类的无参构造方法,若在父类中定义了一个带参数的构造方法,会将默认的无参构造方法覆盖掉。 调用super() 父类构造函数的时候只能调用在子类构造函数的第一行
l Java不支持多继承,但支持多重继承,何为多重继承? 问题: 1,继承,构造方法会不会被继承? 2,说说this和super的区别? |
3. 作业
1. 分析main方法为什么是这么定义的?(即分析public static void这三个关键词的作用)
2. 为什么main方法里面直接调用方法,则该方法就必须是static的,而通过对象调用则不要求该方法为静态的。
3. 创建一个类,有自己的静态代码块、构造方法。在测试类中创建该类的多个对象,得到其执行结果,请写上你对这个输出结果的分析
4. 判断下面的说法是否正确,并阐述理由 a在静态方法中可以直接使用非静态变量
b 在非静态方法中可以使用静态方法
c 静态方法中不能使用this关键字
d 用static声明的方法为静态方法,调用此方法时可直接用类名调用
|