Java语言基础篇(四)
一、面向对象程序设计
1、概念
面向对象程序设计(OOP ,Object Oriented Programming ),是一种计算机编程架构,由对象所组成,对用户公开特定的功能部分,隐藏具体的实现内容,即它不关心对象的具体实现,只需满足用户的需求即可。面向对象的重点是类 和对象 。
2、面向对象的三大特性
- 封装
- 继承
- 多态
- 抽象(面试时,假如面试官问到面向对象的四大特性有哪些,就把抽象也给回答上)
二、封装
1、定义
封装是面向对象三大特性之一,它将数据(属性)和行为(方法)组合在一个类中,对对象的调用者隐藏数据的实现方式,它不能让类中的方法直接访问其他类中的实例域,而是通过对象的方法与对象的数据进行交互。
2、作用
封装的作用:
- 给对象赋予“黑盒”特性
- 提高代码的重用性(
复用 )和可靠性(安全 )
3、访问修饰符
- 定义:访问修饰符又可以叫做权限修饰符,可以用来修饰类、成员变量和成员方法。
- 分类:
- default
- private
- protected
- public
- 访问修饰符的作用范围
修饰符 | 当前类 | 同一包 | 子类(可不同包) | 不同包 |
---|
private | √ | | | | default | √ | √ | | | protected | √ | √ | √ | | public | √ | √ | √ | √ |
4、其他修饰符
- final修饰符
final修饰符可以修饰类、方法及变量,表示“最终” 的意思。 ① final修饰的类不能继承,如String类,StringBuffer等。 ② final修饰的方法不能被子类重写。 ③ final修饰的变量为常量,只能赋值一次,不能再次修改。 ④ final修饰的成员变量必须在声明的同时进行赋值,赋值机会只有一次,即在构造方法中进行赋值才能使用。 - static修饰符
static修饰符可以修饰方法及变量,表示“静态”的意思。 静态成员变量属于类,不属于任何独立的对象,因此无需创建类的实例就可以访问到静态成员变量。static的变量在类装载时便被初始化。 ① 一个类的静态成员方法只能访问静态成员变量。 ② 一个类的静态成员方法不能够直接调用非静态成员方法。 ③ 可以通过类的实例.静态成员方法 来进行访问,但不推荐这样使用; ④ 静态方法中不存在当前对象,因此不能使用 this ,当然也不能使用 super ; ⑤ 静态方法不能被非静态方法覆盖; ⑥ 构造方法不允许声明为 static 的; ⑦ 局部变量不能使用static修饰。 - this修饰符
this用来表示当前类的实例。 作用: ① 在构造方法中作为方法名表示调用当前类的其他构造方法。 ② 调用当前类的其他成员变量或者成员方法。 - super修饰符
super表示父类。 作用: ① 调用父类中声明为private的变量。 ② 调用在子类中已被覆盖的方法。 ③ 作为方法名表示父类构造方法。
三、类和对象
1、类
-
定义:类是对现实生活中一类具有共同属性 和行为 的事物的抽象,是构造对象的模板 ,是Java程序的基本组成单位 。 -
本质:
- 类是对象的
数据类型 。 - 类是相同
属性 和行为 的一组对象集合。 -
类的组成
- 属性:在类中通过
成员变量 (类中方法外的变量)来实现。 - 行为:在类中通过
成员方法 来实现。 -
识别类的简单规则:分析问题然后寻找名词,成员方法可以查找问题中出现的动词。 -
类的定义 格式: public class 类名 {
数据类型 变量名;
...
数据访问修饰符 返回的数据类型 方法名() {
}
}
例子: public class User {
private String name;
private Integer age;
public String eat() {
System.out.println("吃饭");
}
}
-
类之间的关系
-
依赖(“user-a”):这种关系是最常见 的,也是最明显 的,例如在类的一个方法操作另外一个类的对象。 例子: class A {
public void testA() {
B b = new B();
b.testB();
}
}
class B {
public void testB() {
System.out.println("B say hello!");
}
}
-
聚合(“has-a”):这种关系是具体 的,也易于理解 ,即一个类中包含另外一个类。 例子: class A {
private B b;
}
class B {
private A a;
}
-
继承(“is-a”):这种关系的本质就是特殊 和一般 ,即子类继承于父类,子类拥有了父类的成员变量和方法。 例子: class A {
public String s;
public void sayHello() {
System.out.println("hello");
}
}
class B extends A {
}
2、对象
3、初始化块
????????初始化块是Java类中出现的成员,用来初始化对象。在初始化块中可以执行任何可执行的语句以及定义方法块局部变量和调用方法等。
-
对象初始化块 对象初始化块也叫做普通初始化块,普通初始化块是对对象进行初始化。 demo : public class Person {
{
System.out.println("第一个初始化块");
}
{
System.out.println("第二个初始化块");
}
public Person() {
System.out.println("Person的无参构造器");
}
public static void main(String[] args) {
new Person();
}
}
运行结果如图所示: -
静态初始化块 当普通初始化块被static修饰后就变成了静态初始化块,也被称做类初始化块。
注意:初始化块只能被static修饰符进行修饰。
demo : public class Person {
static {
System.out.println("Person的静态初始化块");
}
{
System.out.println("Person的第一个初始化块");
}
{
System.out.println("Person的第二个初始化块");
}
public Person() {
System.out.println("Person的无参构造器");
}
public static void main(String[] args) {
new Person();
}
}
运行结果如下图所示:
关于Java的初始化块、静态初始化块、构造函数的执行顺序请自行查阅: Java的初始化块、静态初始化块、构造函数的执行顺序及用途探究
上一篇 Java语言基础篇(三)
|