Java复习一——CH1 Fundation、CH2 OOP

CH1 Java Fundamentals

1.1 Java Features(java特色)

1.1 Simplicity: simple grammar, rich library  简单好用: 语法简单,库文件丰富

1.2 Pure OO: everything is object!  所有程序都是对象

1.3  Security: memory access, garbage collection, exception 安全:内存使用,垃圾收集,意外处理

1.4 Portability: Java Virtual Machine JVM

1.5 Interpreted execution: Bytecode

1.2 The Structure Of Java Programs :一共分为6部分

2.1 package declaration 包声明  (一是该类所属的包,二是该类import的包)

2.2 class declaration  类声明

2.3 variable declaratio  变量声明和初始化

2.4 constructor 构造函数

2.5 method  方法 

2.6 main method  主要方法

Java复习一——CH1 Fundation、CH2 OOP_第1张图片

1.3 Java Primary Data Types

Java复习一——CH1 Fundation、CH2 OOP_第2张图片

1.主要数据类型的值不是对象!

2.每一个主要数据类型都有一个相应的Wrapper (封装器)将其值封装为一个对象

Java复习一——CH1 Fundation、CH2 OOP_第3张图片

注:“472”不是一个int对象,a的Compare函数不适用

1.4 Naming:开头(字母、下划线、$) + 其它(字母、数字、下划线、$)

name = First letter (letter、_、$) +The remaining part (digit 、letter 、underline‘_’ 、‘$’)

Java复习一——CH1 Fundation、CH2 OOP_第4张图片

1.5 Java 操作符

5.1 Mathematical operator: +、- 、* 、/ 、%

5.2 Relational operator :> 、>= 、 < 、<= 、 == 、!= 、 

instanceOf (测试左边是否是右边类的实例)

5.3 Logical operator :&、|

5.4 Bitwise operator (移位操作):<<、<<

5.5 Assignment operator(赋值操作)

CH2 Java OOP

1.Class and Objects

1.1 关于内部类和static

用static修饰的代码块表示静态代码块,当Java虚拟机(JVM)加载类时,就会执行该代码块。

另外一个关键字final:可以用来修饰类、方法和变量,表明它们不能被继承或被修改。

1.1.1 static修饰的变量(可以根据类名直接访问)

一般在需要实现以下两个功能时使用静态变量:

1.在对象之间共享值时

2.方便访问变量时

1.1.2 static修饰的方法(可以通过类名直接调用)

        Java复习一——CH1 Fundation、CH2 OOP_第5张图片

因此静态方法:

1、不能使用this关键字

2、只能调用所属类的静态成员和静态方法.

Math类中的所有方法都是静态的,因为均可直接调用。

此外,一个类内部的方法一般都是非静态的。

1.1.3 static修饰的类(又称为静态内部类) 

1>只有成员内部类才能加 static 变成静态内部类,成员内部类不能存在任何static的变量和方法。

非静态内部类是跟外部类的实例绑定的。

2>成员内部类可以无条件访问外部类的所有成员属性和成员方法(包括 private 员和静态成员)

内部类和外部类的方法和变量同名时,使用如下方法访问外部类同名成员:

外部类 .this .成员变量

外部类 .this .成员方法

如果不加外部类.this. 则调用的是内部类变量和方法

Java复习一——CH1 Fundation、CH2 OOP_第6张图片

3>一个类中可以有多个静态初始化块和多个普通初始化块;静态初始化块的执行要早于普通初始化

;同一个类型的初始化块的执行顺序取决于定义的先后顺序

小练习:(1)Java复习一——CH1 Fundation、CH2 OOP_第7张图片(2)静态方法不能使用this

Java复习一——CH1 Fundation、CH2 OOP_第8张图片

1.2 Overload 重载(一个类内部同名但不同参数的函数称为重写)

重载只有一个要求,你得让编译器知道你用的是那么多重名函数中的哪一个!!

编译器通过什么来判断呢?只能通过函数中的参数呀。

1.3 Main method(主方法——程序的入口)

每个程序都有0个或者1个Main method:

1.4 Storge of Objects(对象的存储)

1>寄存器:

2>栈:对象地址、主要类型

3>堆:对象本身

4>方法区: 对象方法,静态数据

5>常量池:

6>内存:  流对象、持续对象

1.5 Access Control (使用权限管理)

Java复习一——CH1 Fundation、CH2 OOP_第9张图片

2.Abstraction(类似C++中的模板)

2.1抽象类:

如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。

父类包含了子类集合的常见的方法,但是由于父类本身是抽象的,所以不能使用这些方法。

抽象类本身并不能被实例化,抽象类必须要继承后才能使用。

2.2 抽象方法:

只有方法名,没有方法体。因为可能每个子类的该方法体都不同。

Java复习一——CH1 Fundation、CH2 OOP_第10张图片

声明抽象方法会造成以下两个结果:

  • 如果一个类包含抽象方法,那么该类必须是抽象类。
  • 任何子类必须重写父类的抽象方法,或者声明自身为抽象类。

3.Inheritance(继承)

且在进行构造时,子类的构造函数可以构造父类的类

例:Animal a = new Cat(); // 向上转型

重写方法中,返回值的使用权限只能不变或者扩大,不能缩小!!

3.1 继承关键字 extended、implements

1>extended表示该继承是单继承:

Java复习一——CH1 Fundation、CH2 OOP_第11张图片

 2>使用 implements 关键字可以变相的使java具有多继承的特性

Java复习一——CH1 Fundation、CH2 OOP_第12张图片

3>java不支持多继承,但支持多重继承

Java复习一——CH1 Fundation、CH2 OOP_第13张图片

4>super 与 this 关键字:

super关键字:我们可以通过super关键字来实现对父类成员的访问,用来引用当前对象的父类

this关键字:指向自己的引用。

示例:

Java复习一——CH1 Fundation、CH2 OOP_第14张图片

5>final 关键字

final 可以用来修饰变量(包括类属性、对象属性、局部变量和形参)、方法(包括类方法和对象方法)和类。

使用 final 关键字声明类,就是把类定义定义为最终类,不能被继承,或者用于修饰方法,该方法不能被子类重写,或用于修饰变量,该变量不可被修改

声明类:

Java复习一——CH1 Fundation、CH2 OOP_第15张图片

注: final 定义的类,其中的属性、方法不是 final 的。

6>构造器Constructor

子类是不继承父类的构造器(构造方法或者构造函数)的,它只是调用(隐式或显式)。如果父类的构造器带有参数,则必须在子类的构造器中显式地通过 super 关键字调用父类的构造器并配以适当的参数列表。

如果父类构造器没有参数,则在子类的构造器中不需要使用 super 关键字调用父类构造器,系统会自动调用父类的无参构造器。

示例:

Java复习一——CH1 Fundation、CH2 OOP_第16张图片

Java复习一——CH1 Fundation、CH2 OOP_第17张图片

7>@Override

重写:子类对父类方法内容的重新定义。

规则:

  • 参数列表必须完全与被重写方法的相同。
  • 返回类型与被重写方法的返回类型可以不相同,但是必须是父类返回值的派生类(java5 及更早版本返回类型要一样,java7 及更高版本可以不同)。
  • 访问权限不能比父类中被重写的方法的访问权限更低。例如:如果父类的一个方法被声明为 public,那么在子类中重写该方法就不能声明为 protected。
  • 父类的成员方法只能被它的子类重写。
  • 声明为 final 的方法不能被重写。
  • 声明为 static 的方法不能被重写,但是能够被再次声明。
  • 子类和父类在同一个包中,那么子类可以重写父类所有方法,除了声明为 private 和 final 的方法。
  • 子类和父类不在同一个包中,那么子类只能够重写父类的声明为 public 和 protected 的非 final 方法。
  • 重写的方法能够抛出任何非强制异常,无论被重写的方法是否抛出异常。但是,重写的方法不能抛出新的强制性异常,或者比被重写方法声明的更广泛的强制性异常,反之则可以。
  • 构造方法不能被重写。
  • 如果不能继承一个方法,则不能重写这个方法。
     

Java复习一——CH1 Fundation、CH2 OOP_第18张图片

Java复习一——CH1 Fundation、CH2 OOP_第19张图片

子类对父类方法内容的重新定义。

若想要在子类中调用父类中的被重写方法,只能使用super关键字进行调用

重写的好处在于子类可以根据需要,定义特定于自己的行为。 也就是说子类能够根据需要实现父类的方法。

示例:

Java复习一——CH1 Fundation、CH2 OOP_第20张图片

4.Polymorphism(多态)

4.1 多态是同一个行为具有多个不同表现形式或形态的能力。

现实中,比如我们按下 F1 键这个动作:

  • 如果当前在 Flash 界面下弹出的就是 AS 3 的帮助文档;
  • 如果当前在 Word 下弹出的就是 Word 帮助;
  • 在 Windows 下弹出的就是 Windows 帮助和支持。

同一个事件发生在不同的对象上会产生不同的结果。

4.2多态存在的三个必要条件

  • 继承
  • 重写
  • 父类引用指向子类对象:Parent p = new Child();

5、接口

除非实现接口的类是抽象类,否则该类要定义接口中的所有方法。

5.1 接口定义

一个实现接口的类,必须实现接口内所描述的所有方法,否则就必须声明为抽象类。

  1. 不能实例化
  2. 没有构造方法

5.2 接口声明

  1. 方法默认public abstract修饰:接口中每一个方法也是隐式抽象的,声明时同样不需要abstract关键字。
  2. 变量默认public static final修饰:子类修改了值会影响到其他所有子类,因此就不应该允许子类修改这个值,所以也必须定义为final。如果不是 static 的,这个变量来自哪一个接口就会产生歧义,所以实现类使用接口中的变量必须通过接口名指定,也就只能定为 static 

Java复习一——CH1 Fundation、CH2 OOP_第21张图片

5.3 接口实现

当类实现接口的时候,类要实现接口中所有的方法。否则,类必须声明为抽象的类。

类使用implements关键字实现接口。在类声明中,Implements关键字放在class声明后面。

5.4 接口继承

一个接口能继承另一个接口,和类之间的继承方式比较相似。接口的继承使用extends关键字,子接口继承父接口的方法。

你可能感兴趣的:(java,开发语言)