慕课JAVA重温---类、对象、封装、继承、多态
2023-09-11 14:19:17 时间
类和对象
- 声明对象:在内存的栈空间中执行。ImoocStudent student;
- 实例化对象:在内存的堆空间执行。new ImoocStudent();
栈空间、堆空间、方法区空间
- 栈空间:存储的是方法以及局部变量。当方法被执行时,栈内存空间中就会为其分配内存,此时方法就会进入栈空间执行,称为压栈。当方法执行结束后,就会释放空间,称为弹栈,此时方法就会退出栈内存空间。方法一定是压栈和弹栈!
- 堆空间:用于储存java程序中产生的对象。比如在程序中遇到new关键字,就会产生一个对象实例,这个对象实例会被存储在堆内存空间中。
- 方法区空间:保存的是代码片段、常量以及static修饰的变量
一、属性赋值
public class ImoocStudent {
String nickname;
public static void main(String[] args) {
ImoocStudent student = new ImoocStudent();
// 给成员属性赋值
student.nickname = "Colorful";
System.out.println("昵称:" + student.nickname);
}
}
二、构造方法
1、构造方法没有返回类型,并且方法名要与类名同名。
2、如果我们没有定义构造方法,系统会有一个默认的构造方法。换句话说:任何一个类都会有一个构造方法。
根据参数的有无,构造方法可分为两种:
- 无参构造方法
- 有参构造方法
3、无参构造方法,在实例化后,会默认执行
4、有参构造:允许定义多个参数列表不同构造方法。
三、this
封装
一、含义
类的一些特征和行为隐藏在类内部,不允许类外部直接访问。
二、如何封装
- 修改属性的可见性为private;
- 创建公开的 getter 和 setter 方法,分别用于属性的读写;
- 在 getter 和 setter 方法中,对属性的合法性进行判断。
三、不封装
不同类之间实例化对象后,可以随意赋值修改属性
四、封装
1、对要封装的类的属性添加 private
此时外部调用,实例化对象后,属性不能随意修改,如下图
2、对要封装的类添加get、set方法(预留接口)
3、外部调用该类时,调用get、set方法(接口)
继承
1、继承可以使用父类的属性、方法;然后也可以有自己新定义的属性、方法
2、方法重写
- 如果一个类从它的父类继承了一个方法,如果这个方法没有被标记为 final 或 static,就可以对这个方法进行重写。重写的好处是:能够定义特定于子类类型的行为,这意味着子类能够基于要求来实现父类的方法。
- 在要重写的方法上面,可以选择使用 @Override 注解,让编译器帮助检查是否进行了正确的重写。
- 重写方法的参数列表应该与原方法完全相同;
- 返回值类型应该和原方法的返回值类型一样或者是它在父类定义时的子类型;
3、方法重载
方法重载(Overloading)发生在同一个类里面两个或者是多个方法的方法名相同但是参数不同的情况。
多态
多种形态,分两种情况:父类引用指向子类对象、子类引用指向父类对象
1、三步
- 满足继承关系
- 要有重写
- 父类引用指向子类对象、子类引用指向父类对象
2、父类引用指向子类对象:向上转型
向上转型就是父类引用指向子类实例,也就是子类的对象可以赋值给父类对象。例如:
Pet dog = new Dog();
3、子类引用指向父类对象:向下转型
参考:
http://www.imooc.com/wiki/javalesson/polymorphism.html
http://t.csdn.cn/VyKcD
相关文章
- java虚拟机学习-Java常量池理解与总结(13-2)
- Java 并发工具包 java.util.concurrent 用户指南
- 【JAVA】JSP操作数据库简单实例和mysql-connector-java-5.0.3-bin.jar项目配置方法
- 【Java】理解封装、继承、多态和对象数组的综合实例(简易的租车系统,附代码)
- Java if判断对象为null时,null放在比较运算符的左边还是右边?哪种才是java标准?进来看看你就知道了
- 回归JAVA: java文件编译后,出现xx$1.class的原因
- Java 9的14个新特性总结
- 2022最新Java面试宝典(史上最全,BAT大厂面试必备,用心看完该篇就够了,建议先关注点赞加收藏)
- JAVA单元测试框架-12-java代码重复执行失败的测试用例
- java 中判断输入是否合法 if (变量名.hasNextInt())
- 第二十六节:复习Java语言基础-Java的概述,匿名对象,封装,构造函数
- Java Scanner 类,超详细整理,适合新手入门
- Java 18 新特性:使用Java代码启动jwebserver
- 基于Java(SSM)+SqlServer框架的(Web)医院药品库存管理系统【100010080】
- Java IDEA中设置导入import java.xx.*和设置导入具体的import java.xx.yy;
- Java动态代理的实现机制
- 1. java.util.concurrent - Java 并发工具包
- java整理软件--- Java OCR 图像智能字符识别技术,可识别中文,但是验证码不可以识别...已测识别中文效果很好
- Error running 'dt-assets-monitor [clean]': Cannot run program "C:Program Files (x86)Javajdk1.8.0_73binjava.exe" (in directory "E:codedt-assets-monitor")
- Java学习-050-AES256 之 java.security.InvalidKeyException: Illegal key size or default parameters 解决方法
- java安全编码指南之:声明和初始化
- Java打印输出:java天龙八部私服
- Java .class 反编译 Luyten,导出 .java文件,查看jar 包目录,超级简单,实用
- Java_类似java.lang.VerifyError: Expecting a stackmap frame at branch target 22 in method的解决方法
- 『Java练习生的自我修养』java-se进阶³ • 线程的等待与唤醒
- 【深入JAVA】java注解
- Java千百问_03基本的语法(005)_二进制是如何做位运算的
- Java学习笔记_3 @面向对象
- java.lang.OutOfMemoryError: Java heap space错误及处理办法(收集整理、转)
- java面向对象编程——封装
- JAVA封装 包
- JAVA封装 构造方法,this,static,重载
- java 封装
- zabbix监控nginx,mysql,java
- Java enum
- Java MyBatis的介绍及其执行原理