面向对象的三条主线:

  1. 类及类的成分

  2. 面向对象的三大特性

  3. 其他的关键字:this super import package abstract static final interface等

1. Java程序是关注于类的设计

类从代码的角度:并列关系;

从执行、设计的角度:关联关系、继承关系、聚合关系。

class A{
}
class B{
A a = new A();
}

2. 类的成分:

属性 方法 构造器 代码块 内部类

(1)属性

①变量的分类:成员变量(属性 Field) vs 局部变量(方法的形参、方法内部、代码块内部) 基本数据类型(8种,不同的数据类型对应不同的默认初始化值) vs 引用数据类型(数组、类、接口 默认初始化值为null)

②属性的声明格式:修饰符 数据类型 变量名 = 初始化值;//java是强数据类型的语言

③对属性的赋值的操作:1.默认初始化 2.显式的初始化 3.代码块的初始化 4.构造器的初始化;5.调用方法、属性进行赋值

(2)方法

  • ①格式:修饰符 (其它的关键字:static/final/abstract)返回值类型 方法名(形参列表){ //方法体 }

  • ②方法的重载(overload) vs 方法的重写(override overwrite)

  • ③ 方法的参数传递机制:值传递(难点)

(3)构造器

  • ①构造器的作用:

    • 创建类的对象

    • 初始化对象的成员变量

  • ②构造器也是可以重载的

(4)代码块

主要作用:用来初始化类的成员变量分类:静态的代码块 vs 非静态的代码块

(5)内部类

  • ①分类:成员内部类(static 的成员 vs 非static的成员) vs 局部内部类(方法内部声明的类)

  • ②掌握 :

    • 如何创建成员内部类的对象(如:创建 Bird 类和 Dog 类的对象)

    • 如何区分调用外部类、内部类的变量(尤其是变量重名时)

    • 局部内部类的使用

3. 类的初始化(创建类的对象)

(1)如何创建类的对象。如: Person p = new Person(); Date d = new Date();

(2)内存解析:

  • ①内存

    栈:局部变量、对象的引用名、数组的引用名
    堆:new 出来的“东西”
    方法区:(字符串常量池)
    静态域:存放类中静态的变量
  • ②如何理解创建的对象在内存中加载的过程

(3)子类对象实例化的全过程:SubClass sc = new SubClass();

4. 面向对象的三大特性

(1)封装性:

  • ① 通过私有化类的成员变量,通过公共的 getter 和 setter 方法来调用和修改

  • ② 还可以对类的其他结构进行“封装”

  • ③ 权限修饰符:public protected 缺省 private

    (2)继承性:

  • 通过让一个类A继承另一个类 B,就可以获取类 B 中的结构(主要的:属性、方法、构造器)。子类:类A 父类:类B

  • Java 中的类的继承性:单继承的。

(3)多态性:

  • ①体现:方法的重载与重写 ;子类对象的多态性 Person p = new Student();

  • ②子类对象多态性的使用:虚拟方法调用。

  • ③向上转型 向下转型 Student s = (Student)p; //建议在向下转型之前: if ( p instanceof Student) 避免出现 ClassCastException 的异常

5. 其它关键字

  • this:修饰属性、方法、构造器 。表示:当前对象或当前正在创建的对象

  • super:修饰属性、方法、构造器。显式的调用父类的相应的结构,尤其是子父类有重名的方法、属性

  • static : 修饰属性、方法、代码块、内部类。随着类的加载而加载!

  • final:修饰类、属性、方法。表示“最终的”

  • abstract : 修饰类、方法

  • interface:表示是一个接口,(接口是与类并列的一个结构)。类与接口之间同时“implements”发生关系。

  • package import

注:abstract不能修饰属性、构造器、不能与 final static private 共用。

6. Bank项目

Java基础实战Bank项目01-04 - CSDN博客