目录
1,面向对象( Object Oriented )
概念
想要理解面向对象( Object Oriented ) ,我们就应该知道,什么是面向对象?
面向对象( Object Oriented ) 是一种思想编程。
面向对象 ( Object Oriented ) 是将现实问题构建关系,然后抽象成 类 ( class ),给类定义属性和方法后,再将类实例化成 实例 ( instance ) ,通过访问实例的属性和调用方法来进行使用。
区别:
面向过程的开发语言:C语言 注重的是数据结构和算法,程序中最小的单元是函数
面向对象的开发语言:java语言 注重的是类中的属性和方法,程序中最小的单元是类
2,Java中的类和对象
类在面向对象中是一个很重要的概念
类:类是对象的抽象 在现实生活中,把具有相同属性和行为的一类事物抽象出来,形成一个脑海中的概念
对象:对象是类的实例 万物皆对象,看得见、摸得着的事物都是一个个的对象
1.类具有三个特征:封装,继承,多态
封装:
封装:属性的封装,在定义类的时候,在属性前加上pravite修饰符,使得该类不能被外部类直接去访问,只提供外部类能够访问的public修饰的方法(get/set)去间接访问该属性
方法的封装目的:为了保证数据的安全性,不会被恶意的被篡改。
继承:
继承:当两个类(子类和父类)满足子类 is a 父类 ,就代表这两个类属于子父类继承关系
继承的特点:当子类和父类属于同一个包中,子类能够继承父类所有非私有的修饰符修饰的方法和属性
当子类和父类不属于同一个包中,子类能够继承父类所有非私有、非默认的修饰符修饰的方法和属性
多态:
多态:同一种事务具有不同的表现形式
编译时多态:方法重载
运行时多态:方法重写
多态的前置条件:
1,有子父类继承关系
2,方法重写
3,向上转型
2.方法重写和重载
方法重写
方法重写:当子类对从父类中继承过来的方法不满意时,会对该方法进行重写
满足前提条件:
1,有子父类继承关系(允许子类中定义一个和父类中方法名相同的方法)
2,子类中重写的方法参数列表要和父类中的方法参数列表保持一致
3,子类在重写的方法返回值类型必须和父类中的方法返回值类型保持一致或者是父类中方法方法的返回值类型的子类
4,子类中重写的方法的访问修饰符不能比父类中的方法访问修饰符更严格(private<默认<protected<public)
5,子类中重写的方法抛出的异常不能比父类更大
6,父类中的final修饰符修饰的方法子类只能被继承,不能被重写
方法重载
方法重载:在Java类中允许存在两个同名的方法,但是参数列表必须不同(与返回值,修饰符无关)
参数列表不同:1,参数列表个数不同
2,参数列表个数相同,但是对应的数据类型不同
3,Java中的修饰符
Java中的修饰符:public,protect,默认的,private
可以修饰类、变量、方法
类:外部类可以用public、默认的修饰 内部类没有限制
变量:四种修饰符都可以
方法:四种修饰符都可以
4,Java中的构造器
构造方法的作用:
1,构造方法用于创建类的对象 new 构造方法
2,在创建对象的同时给对象赋予初始值 get/set(Java的封装)
构造方法的格式:构造方法的方法名和类名保持一致,构造方法没有返回值,且不能写void,final、static、abstract等修饰符都不能修饰构造方法
构造方法的特征:
1 、任意创建的类都默认有一个无参的构造方法(看不见)
2、若人为的定义一个构造方法,则默认的无参构造方法就会消失
3、构造方法不能被继承,因此也不能被重写,但是可以重载
4、构造方法中可以调用该类的普通的成员方法,但普通的成员方法中不能调用构造方法
new 构造方法和调用构造方法不是一回事
new构造方法包含了调用构造方法结构
5、构造方法可以去调用其他构造方法,调用时,通过this()去调用,且this();代码必须在构造方法中的第一行
6、构造方法中的第一行代码默认为super(),调用父类的无参构造方法
注意:为什么构造方法中的第一行要去调用父类的无参构造方法?
子类能够继承父类中的属性(全局变量)和方法,属性是有默认值的,子类能够从父类中继承一部分属性过来,
从父类继承过来的属性需要调用父类的构造方法对属性进行初始化操作(赋予默认值)
5,java中类中的代码执行顺序
类中的代码执行顺序:当创建一个类的对象时,该类中有哪些代码会自动执行
类的组成部分:
静态的属性、非静态的属性、静态的方法、非静态的方法、构造方法、静态代码块、非静态代码块、内部类.......
单个类:
1、静态的属性赋值、静态的代码块
2、非静态的属性赋值、非静态的代码块
3、构造方法
子父类:
1、父类中的属性赋值、静态的代码块
2、子类中的属性赋值、静态代码块
3、父类中的非静态属性赋值、非静态代码块
4、父类构造方法
5、子类中的非静态的属性赋值、非静态代码块
6、子类构造方法
静态代码块
静态代码块:在加载类(1、java源程序经过编译之后变成.class字节码文件,2、将字节码文件加载到jvm内存中)的时候会自动执行
非静态代码块
非静态代码块:在创建该类的对象时会自动执行