| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Java知识库 -> Java入门4 -> 正文阅读 |
|
[Java知识库]Java入门4 |
12.什么时候将变量定义为成员变量 这个变量可以描述这个类的具体属性(现实具体事务的属性);如果不能描述这个类的具体属性,优先定义局部变量. 13.类的初始化过程 Student s = new Student();完成了那些事情 (1)在栈内存中开辟空间Student s,变量s开辟 (2)new Student()在堆内存中申请空间 (3)申请空间的同时对成员变量进行默认初始化 (4)默认初始化与申请空间完毕后,产生堆内存空间地址 (5)通过构造方法初始化将堆内存空间地址值赋给栈内存的变量s (6)栈内存的变量s指向堆内存地址 (7)当对象整个完毕之后,等待垃圾回收器空闲的时候回收不用的对象. 14.继承:将多个类的共性内容抽取出来,放在一个独立类中,让这个独立类和这多个类产生一种关系. 格式: class 子类名 extends 父类名{} 继承的好处: (1)提高了代码的复用性 (2)提高了代码的维护性 (3)继承是多态的前提 继承的弊端:继承存在耦合性 开发的原则:低耦合,高内聚. 耦合:类与类之间的关系;低耦合:关系越简单越好 内聚:指的是某件事的执行能力;高内聚:一个类能解决尽量使用一个类完成. 继承的特点 (1)类与类的继承关系只支持单继承 (2)虽然类与类之间只能单继承,都是可以多层继承. 15.代码块 分类: (1)局部代码块({}):在方法定义中定义 作用:限定局部变量的生命周期 (2)构造代码块({}):在构造方法之前,类的成员的位置 特点:在执行构造方法之前,如果存在构造代码块,优先执行构造代码块,然后才是构造方法 (3)静态代码块(static{}): 特点:随着类的加载而加载 优先级:静态代码块>构造代码块>构造方法 16.static关键字 static(静态修饰符):共享,共用,可以被多个对象共用. 特点: (1)被静态修饰的变量或方法,都是随着类的加载而加载. (2)优先于对象存在,不能和this关键字共存;被静态修饰的优先进入了static内存区,this则是需要等待对象被创建完毕. (3)共享,共用,可以被共用. 静态修饰的变量或方法的访问:类名访问 静态的成员变量: 类名.变量名; 静态的成员方法: 类名.方法名(); 使用静态的注意事项:静态永远只能访问静态. (1)非静态的成员方法,可以访问静态的成员变量或非静态的成员变量. (2)静态的成员方法只能访问静态的方法或者静态的成员变量. 17.静态变量和成员变量的区别 (1)数据存储区域: 静态变量:存储在方法区中的共享内存区域中静态区域中(static区域) 成员变量:堆内存中 (2)别名不同(称谓) 静态变量:与类有关系------>类成员 成员变量:对象的特有属性------->实例(对象)变量 (3)生命周期不同: 静态变量:随着类的加载而加载,随着类的加载完毕,进入static区域中消失 成员变量:随着对象的创建而存在,随着对象的创造完毕等待垃圾回收器空闲的时候回收 (4)调用方式不同: 静态变量:既可以使用对象名访问,也可以使用类名访问(建议使用) 成员变量:只能使用对象名来访问 继承的注意事项: (1)因为私有成员只能在本类中访问,外界不能访问,所以子类继承父类是只能继承父类非私有的成员,但是私有的成员可以间接通过公共访问方法访问. (2)子类继承父类,不能继承父类的构造方法,但是可以通过super关键字访问. 继承中成员变量的访问: (1)子类的成员变量名称与父类的成员变量名称不一致时:分别调用. (2)子类的成员变量名称与父类的成员变量的名称一致时:遵循就近原则. a.先在子类的局部位置找,如果存在,使用,如果不存在------>b b.在子类的成员位置中找,如果存在,使用,如果不存在------>c c.在父类的成员位置中找,如果存在使用,如果不存在则报错. 继承中构造方法的访问:子类通过super关键字访问父类的构造方法. (1)子类中所有的构造方法都要默认访问父类的无参构造方法(所有子类的构造方法中的第一句话是:super();访问父类的无参构造方法) (2)在继承关系中,子类的构造方法可能会用到父类的数据,所以需要让父类初始化(构造方法) (3)接着子类在进行初始化 如果在继承中,只提供有参构造方法,子类会出现什么现象?如何解决? 子类会全部报错. 报错原因: 在类中系统会默认提供一个无参构造方法,但是如果为类提供了一个有参构造方法,则系统不会提供无参构造方法;而子类的构造方法都会默认访问父类中的无参构造方法. 解决方案: (1)给父类提供一个无参构造方法 (2)通过super()让子类中的所有构造方法直接访问父类的有参构造方法. (3)先通过this()让子类中的有参构造方法访问本类中的无参构造方法,然后通过super()让本类中的无参构造方法访问父类的有参构造方法,让其初始化. 18.super关键字 super:代表父类的空间标识(父类对象的地址值引用) 19.this与super的区别 this:代表当前类的对象的地址值引用 super:代表父类的空间标识(父类对象的地址值引用) 访问成员变量(属性): this:访问当前类的成员变量;格式:this.变量名 super:访问父类的成员变量;格式:super.变量名 访问构造方法: this:访问当前类的构造方法;格式:this() super:访问父类的构造方法;格式:super() 访问成员方法: this:访问当前类的成员方法;格式:this.方法名() super:访问父类的成员方法;格式:super.方法名() 20.方法重写 方法重写(覆盖/复写):子类继承父类的时候,子类的出现了和父类一模一样的方法声明 目的:使用子类的功能将父类的功能覆盖掉. 21.final关键字 final:状态修饰符,最终的,无法更改的. 特点: (1)可以修饰类,该类不能继承,它不能在进行扩展. (2)可以修饰变量,此时这个变量就成了一个常量:自定义常量. (3)可以修饰成员方法,但是被修饰之后这个成员方法就不能被重写了. 应用场景:自定义常量居多(与static结合一块使用) final修饰的基本数据类型与修饰引用数据类型的区别: 修饰基本数据类型:编译时期常量(public static final 基本数据类型 变量名 = 常量值 ) 基本数据类型的值不能在改变,只能赋值一次,不能在赋值了;此时JVM只检查语法,不需要加载. 修饰应用数据类型:运行时期常量 应用数据的空间地址值不能在改变,但是里面的成员变量(没有加入final)依然可以访问;此时JVM需要加载类 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/23 22:24:58- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |