目录
- 背景
- 第一部分 开发、测试环境项目部署
- 第二部分 项目打包
- 第三部分 生产环境部署
- 第四部分 总结
- 参考文献及资料
背景
第一部分 方法
1.1 类变量的私有性
1 | public class Person { |
运行报错,Person中变量的私有,外部无法直接修改。
1 | public class Person { |
1.2 this变量
在方法内部,可以使用一个隐含的变量this
,它始终指向当前实例。因此,通过this.field
就可以访问当前实例的字段。例如下面的案例:
1 | public void setAge(int age) { |
1.3 方法参数和可变参数
1 | class Group { |
1.4 参数绑定
调用方把参数传递给实例方法时,调用时传递的值会按参数位置一一绑定。
基本类型参数的传递,是调用方值的复制。双方各自的后续修改,互不影响。
第二部分 构造方法
2.1 自建构造方法
能否在创建对象实例时就把内部字段全部初始化为合适的值?这就是构造方法:
1 | public Person(String name, int age) { |
2.2 默认构造方法
如果一个类没有定义构造方法,编译器会自动为我们生成一个默认构造方法,它没有参数,也没有执行语句。
没有在构造方法中初始化字段时,引用类型的字段默认是null
,数值类型的字段用默认值,int
类型默认值是0
,布尔类型默认值是false
。
1 | class Person { |
如果我们自定义了一个构造方法,那么,编译器就不再自动创建默认构造方法。
第三部分 方法重载
在一个类中,我们可以定义多个方法。如果有一系列方法,它们的功能都是类似的,只有参数有所不同,那么,可以把这一组方法名做成同名方法。
1 | class Hello { |
这种方法名相同,但各自的参数不同,称为方法重载(Overload
)。
第四部分 继承
继承是面向对象编程中非常强大的一种机制,它首先可以复用代码。当我们让Student
从Person
继承时,Student
就获得了Person
的所有功能,我们只需要为Student
编写新增的功能。
1 | class Student extends Person { |
另外由于子类不能继承父类的构造方法,因此,如果要调用父类的构造方法,可以使用 super 关键字。super 可以用来访问父类的构造方法、普通方法和属性。
super 关键字的功能:
- 在子类的构造方法中显式的调用父类构造方法
- 访问父类的成员方法和变量。
1 | public class Student extends Person { |
在OOP的术语中,我们把Person
称为超类(super class),父类(parent class),基类(base class),把Student
称为子类(subclass),扩展类(extended class)。
Java只允许一个class继承自一个类,因此,一个类有且仅有一个父类。只有Object
特殊,它没有父类。
当用final修饰一个类时,表明这个类不能被继承。也就是说,如果一个类你永远不会让他被继承,就可以用final进行修饰。final类中的成员变量可以根据需要设为final,但是要注意final类中的所有成员方法都会被隐式地指定为final方法。
第五部分 多态
在继承关系中,子类如果定义了一个与父类方法签名完全相同的方法,被称为覆写(Override)。
例如,在Person
类中,我们定义了run()
方法:
1 | class Person { |
在子类Student
中,覆写这个run()
方法:
1 | class Student extends Person { |
Override和Overload不同的是,如果方法签名不同,就是Overload,Overload方法是一个新方法;如果方法签名相同,并且返回值也相同,就是Override
。
第六部分 抽象类
如果一个class
定义了方法,但没有具体执行代码,这个方法就是抽象方法,抽象方法用abstract
修饰。
因为无法执行抽象方法,因此这个类也必须申明为抽象类(abstract class)。
1 | public class Main { |
第七部分 接口
1 | public class Main { |
第八部分 静态字段和静态方法
第九部分 包
第十部分 作用域
第十一部分 classpath和jar
第十二部分 模块
参考文献及资料
1、vue
项目文档,链接:https://vuejs.org/