Java学习(二)---面向对象(下)
Java学习(二)---面向对象(下)
学习java!刻不容缓!
大不了找不到工作考研就是了!
焦虑柠檬呢!
基础概念
接口
接口就相当于 一串方法抽象出来,方便多个类 去实现各自的多态功能
interface Person {
void run();
String getName();
}
接口是比抽象类更抽象的存在,因为它只涉及到一系列方法的封装
如果抽象类是讲一系列对象(类)进行抽象
基础知识:一个类可以继承多个接口,但是只能继承一个父类
tips: 讲一下覆写、重写、重载的区别
覆写和重写是一个意思,主要是继承的子类覆写父类方法、
重载是类内存在多个同名成员方法、但是参数列表不同
因此方法签名其实是不一样的,在编译时会根据调用的参数来确定使用的是哪个具体方法
静态
- 静态字段
一个类的静态字段是所有实例所共享的
可以通过类直接进行访问和修改
这就相当于这个班的学生,班级号是一样的,如果修改一个学生的班级号,那么同班学生的班级号都会修改,这个类可以就是某班学生
接口是没有实例字段的,但是可以有静态字段
- 静态方法
静态方法和静态字段一样,不需要通过实例,可以直接通过类进行访问
静态方法只属于class 不属于实例,方法内部只能访问静态字段而不能访问实例变量
(常在工具类中进行使用)
- Arrays.sort()
- Math.random()
包
同一个包的类,可以互相访问字段和方法(同属于一个包作用域)
在跨包引用类时可以有两种方法
- 带上完整的包名
- import导入包
tips: java.util 和java.util.zip 不是同一个包的父子关系,这两个是不同的包
java.util.* 是指导入该包下的所有类
编译器编译的结果中的类名都是完整类名,其中的简单类名会根据下面的顺序进行依次查找:
- 查找当前
package
是否存在这个class
; - 查找
import
的包是否包含这个class
; - 查找
java.lang
包是否包含这个class
。
String 类
链式操作
因为 append()
方法会返回this
所以能实现链式操作
public class Main {
public static void main(String[] args) {
var sb = new StringBuilder(1024);
sb.append("Mr ")
.append("Bob")
.append("!")
.insert(0, "Hello, ");
System.out.println(sb.toString());
}
}
示例
暂无,主要是java特性。。。
参考资料
今日小知识
Java面向对象的执行原理
执行主体类(main方法)时,类和方法会放在方法区
然后遇到 new 对象时,左侧的定义会让 新的类和对应的内部变量以及方法也会放入方法区
然后 右侧 对象会放入堆内存 (该堆内存中存放着固定的类内变量 以及指向类的地址)
而栈内存里存放着 main
main里存着新建的 对象,并将其地址存进来
修改对象成员变量的代码会根据对象地址 修改堆内存内部的成员变量
调用方法时,会检查堆内存中类地址,然后去方法区寻找对应方法
tips:左侧的s1变量 记住的是 堆内存中学生对象的地址
tips:主类的名字必须和文件同名
博主因为找工作的事情,博客更新耽搁了很久,私密马赛