JAVA面向对象基础
运行
javac [main文件] -d [bin文件目录]
java -cp [bin文件目录] [main文件类名]
对象
把业务概括为一个由字段,方法描述的代码实体。
类与实例
类是对象实例的模板,实例时对象类运行时实际产生的具体实体。
字段
可以由java基础数据类型或者对象作为字段。
方法
可能是构造方法,也可能是与业务相关的方法。
- 构造方法:在构造实例时使用,可以通过输入参数构造具体实例
- 方法重载:可以通过不同的输入参数,对于同功能的方法使用同名进行重载
继承
子类可以继承父类的方法和字段,可以使用super访问父类
- ps. 在Java中,任何class的构造方法,第一行语句必须是调用父类的构造方法。
- 向上转型和向下转型
多态
子类可以通过@Overrrider覆写父类方法
抽象类
可以通过@Abstract把类的方法定义成抽象类,以便子类进行继承并且覆写
- 抽象方法只能在抽象类中定义,抽象类可以有非抽象成员
接口
可以通过interface定义一个接口
- 内部只能存在抽象方法
静态字段和静态方法(static)
- 静态字段属于类,被所有实例共享该空间(推荐用类名来访问静态字段)
- 静态方法属于类,可通过类名就可以调用,只能访问静态字段,与静态字段搭配使用。
- 接口的字段只能是public static final(故可以不描述),用处存储必须被公共访问,属于类,且不能被修改的默认值。
包(package)
- 使用 **.**.**路径格式唯一确定包的位置
- 包查找顺序:当前包-import-java.lang
- 为了避免名字冲突,我们需要确定唯一的包名。推荐的做法是使用倒置的域名来确保唯一性。
作用域
- public 所有包公开
- private 本包私有
- protected 本包继承类中公开
- package 未标识的成员默认包作用,用于在同一个包中写其他类使用
- finnal与上述不冲突,修饰class、field和method,可以防止字段被继承覆写,方法被覆写
- 一个.java文件只能包含一个public类,但可以包含多个非public类。如果有public类,文件名必须和public类的名字相同。
内部类
- Inner Class 内部类的创建依赖于已经存在的外部类
- Anonymous Class 匿名类,只用一次的内部类
点击查看代码
class MyClass {
public static void main(String[] args) {
// 创建一个不继承的匿名类
Object obj = new Object() {
public void print() {
System.out.println("This is an anonymous class");
}
};
// 调用 print() 方法
obj.print();
}
}
- Static Nested Class 静态内部类,,它不再依附于Outer的实例,而是一个完全独立的类,因此无法引用Outer.this,但它可以访问Outer的private静态字段和静态方法。
classpath和jar
-
class
classpath用于指定该项目的class文件位置,不推荐系统变量,推荐在jvm手动传入
java -cp [bin文件目录] [main文件类名] -
jar
jar用来打包不同层级的class
zip压缩,后缀未jar就行,第一层不能是bin,根目录要和外界对应
jar cvf my_jar.jar -C bin .