1 面向过程
- 其实就是面向着具体的每一个步骤和过程,把每一个步骤和过程完成,然后由这些功能方法相互调用,完成需求。
特点:强调的是过程,所有事情都需要自己完成
2 面向对象
思想就是不断的创建对象,使用对象,指挥对象做事情。万事万物皆对象。
- 特点:具有继承、封装、多态三大特性
- 类的属性:全局变量(成员变量):在类中、方法外,随着对象的创建初始化,随着对象的销毁而销毁。
- 局部变量:在方法中,随着方法的加载而加载,随着方法的死亡而死亡
- 类的定义方式:
权限修饰符 返回值 方法名(参数类型 参数名…){ 方法体 } -
权限修饰符:
-
public(公共的,哪都可用) protected(受保护的) 默认不写(只在同包可用) private (私有的,在同类可用)
如:创建一个a对象Animal a = new Animal();Animal中的有构造方法
- public Animal(String name,int age){
this.name = name;
this.age = age
}
此构造方法中的name和age会在创建对象时初始化后再初始化一次 - 图1.使用作为方法的返回值
- 图2 对象作为参数 传递到方法中
- 图3 访问静态成员变量
- 图4 新建两个对象
3 构造方法
(1)用来创建对象(类名就是构造方法)
(2)权限修饰符 类名(参数类型 参数名){ }
注意:
- 1.一个类可以定义多个构造方法,如果在定义类时没有定义构造方法,则编译系 统会自动插入一个无参数的默认构造器,这个构造器不执行任何代码。
- 2.如果指定了构造方法,就不会生成无参构造。
- 3.带参构造方法会在堆初始化之后再初始化,即相当于参数会被初始化两次。
- 4.构造方法名必须和类名相同
- 5.构造方法没有返回类型,也不能定义为void,在方法名前面不声明方法类型。
- 6.构造方法之间的调用使用this关键字
如:
- 类也可以作为类型进行传递和返回。
- 如:
4 static关键字
- 描述:静态的。
- 静态的东西使用不需要创建对象(也可使用对象调用【不推荐】)
- 调用方式:直接使用类名 . 静态方法【推荐使用】
- Static内存图
(1) 类的加载顺序:会优先加载静态,然后才是非静态
即:静态只能使用静态,非静态可以使用静态也可以使用非静态。
(2) 定义静态变量,会直接在内存中的方法区的静态区先进行初始化,不会再在堆中初始化,即静态的东西只会初始化一次。
(3) 静态的生命周期:随着类的加载而加载,随着类的销毁而销毁。
(4) 静态中没有this,静态方法(或者对象)会在类加载之前加载。
5. 代码块
- 局部代码块:在方法中的代码块
- 构造方法块:在构造方法中的代码块
- 初始化与类相关的东西(成员变量等)
- 静态代码块:在类中的静态代码块
- 初始化静态成员变量(即公有的静态成员变量等)
代码执行顺序:静态方法–>构造代码块–>构造方法
6. 继承
Java中所有的类都继承Object类,Java中只能单继承
- 继承:类与类之间的关系
使用extends实现继承关系。如父类(Fu),子类(Zi)继承父类(Zi extends Fu) - 父类(也叫基类):私有的(private)子类不能继承。
父类定义:一般为公有的属性及方法 - 子类:可以继承父类的非私有属性
若子类、父类中都有构造代码块、静态代码块、构造方法块,则执行顺序为:
父类静态代码块–>子类静态代码块–>父类构造代码块–>父类构造方法–>子类构造构造代码块–>子类构造方法
重写(override):子类对父类方法的重写(参数类型,方法名都要相同)
- 注意:重写(override)和重载(overload)的区别
重写是在子类和父类之间的,父类含有的方法,子类才可以重写。
重载是在一个类中,方法名相同,而参数类型、个数不同。
(1)在子类的构造方法中,会默认有一个super(); 来调用父类的构造方法,无论我们写不写,它都会存在。
(2)父类中构造方法若是为有参构造,则子类必须要创建一个有参构造来继承父类的构造方法。
图片:
(3)匿名对象:
- 对象只使用一次
- 一般的使用对象:方法内的传值
7 final
final 可以修饰类、方法、变量,一般写在权限修饰符之后,若有static,最好写在static后面。
- 修饰类: 类不能被继承
- 修饰方法: 不能重写
- 修饰变量: 不能被重新赋值(不能修改)
- 常量:被final修饰的变量
8 抽象方法
- 抽象方法的使用最好使用新建子类对象,再调用。
- 可以定义方法,而不写方法体。
- 若父类中需要定义出来的公用方法,不能有方法体,子类必须要重写,则可使用抽象方法。
- abstract 用来修饰方法:方法没有方法体
- abstract:修饰类 修饰的类就是一个抽象类的抽象方法,需要放在抽象类中
9 接口
- java类中只能单继承或者多层继承,但是一个类可以实现多个接口
- 实现接口的关键字用 implements
如:public class Animal implements A,B,C{ }
注意
- 在java 8 以前接口中只能含有抽象方法,java8以后接口中可以含有静态方法(static)和默认方法(default)
- java 9 中接口中可以含有私有方法和私有静态方法
接口和类的区别:
(1)接口中不能实例化对象
(2)接口中没有构造方法
(3)接口中不能包含成员变量,除了static和final变量
(4)接口不是被继承,而是被实现
(5)接口支持多继承
10 多态
多态(Polymorphism)按字面的意思就是“多种状态”。在面向对象语言中,接口的多种不同的实现方式即为多态。引用Charlie Calverts对多态的描述——多态性是允许你将父对象设置成为一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作。简单的说就是:允许将子类类型的指针赋值给父类类型的指针。
多态存在的三个必要条件:继承、重写、父类引用指向子类对象。
- 使用多态调用方法、成员变量
1 使用多态调用成员变量时,编译及运行都是看左边(子类及父类中都含有该成员变量,调用的是父类中的成员变量的值)
2 使用多态调用方法时,编译看左边,执行看右边 (若父类中没有该方法,则会报错;若父类中含有该方法,则会调用子类中的同名方法)
3 instance of关键字:判断一个对象是否是某个类的对象