面向对象基础

1. 三大特征

1.1 封装

1.2 继承(extends)

1.2.1 父类

1.2.2 子类

1.子类在同一个包下面可以范文父类除了私有private修饰的全部属性和方法java

2.在不一样包下面,子类对象只能访问public修饰的属性和方法数组

3.在子类内部,若是不一样包的状况下,能够访问protected修饰的属性和方法,可是不能访问默认的访问修饰符修饰的属性和方法jvm

4.子类在初始化的时候会先调用父类的默认不带参数构造器,若是没有,就会报错,咱们只有人为的修改ide

(1).将父类添加一个无参数的构造器函数

(2).在子类构造器中手动使用super()声明调用哪一个父类的构造器this

1.3 多态

2. 类

2.1属性,成员变量,全局变量

当对象初始化以后,成员变量就会有初始值spa

String null 整型 0 浮点型 0.0 boolean false char (char)0对象

局部变量继承

1.定义的位置不同 局部变量:在方法的内部 成员变量:在方法的外部,直接写在类当中接口

2.做用范围不同 局部变量:只有方法当中才可使用,出了方法就不能再用 成员变量:整个类全均可以通用。

3.默认值不同 局部变量:没有默认值,若是想要使用,必须手动进行赋值 成员变量:若是没有赋值,会有默认值,规则和数组同样

4.内存的位置不同 局部变量:位于栈内存 成员变量,位于堆内存。

5.生命周期不同 局部变量:随着方法进栈而诞生,随着方法出栈而死亡。 成员变量:随着对象建立而诞生,随着对象被垃圾回收而消失。

2.2 行为,动做,函数,方法

全部和动做相关的,都应该放入到方法中

2.3经过类建立对象 new

3. 对象

对象是类的实例

也都具备属性和方法

对象都是属于某个类

一切皆对象

注意:对象是 new XXX(),而不是具体的哪一个名字,名字只是一个引用

3.1对象数组

Book [] books = new Book[50];

4.重要的知识点

4.1 成员变量与局部变量的区别

The local variable type may not have been initialized 局部变量尚未被赋值

成员变量当对象初始化的时候会自动给上初始值

局部变量不会自动给初始值

若是要给成员变量赋初始值,就只能写在一行,不能再另一行从新赋值

4.2 重载(overload)

就是为了少写方法名,一样的方法名,只要参数不同,就能够执行不一样的操做

在同一个类中

方法名同样

参数不同 1.参数类型不同 2.参数个数不同 3.参数的顺序不同(不一样类型的顺序)

4.3 重写(override)

1.继承

2.子类重写父类的方法

3.方法名同样

4.参数类型,参数个数同样

5.返回值同样

6.注意父类private修饰的方法,子类不能重写

7.子类重写方法的访问修饰符可见度,必须必父类方法的访问修饰符可见度高

8.注意:若是只是方法名同样,参数不同,这个样子是一个子类的重载而已

4.4 构造方法(构造器,构造函数)

构造器: 构造器必须和当前的类名相同,所以构造器不能继承!

1.每一个类都默认有构造器

2.默认构造方法就是一个无参数的,没有任何函数体的方法

3.本身手动写构造方法

4.构造方法格式: 访问修饰符 类名([参数...参数]){}

5.构造方法能够重载

6.若是咱们手动写了一个带参数的构造器,会自动的覆盖系统自带的默认构造器

7.习惯:若是手动添加了一个带参数的构造器,最好写一个无参数的构造器

注意: 在new子集的时候会先调用父集的无参数的构造器,带参数的构造器不会自动调用

4.5 javabean

全部的属性都是private

为每一个属性创建setter和getter方法 (快捷键:shift + alt + s)

这个其实就是为了之后装数据用的一个类

4.6 对象转型

向上转型

向下转型

转型须要的条件:

1.继承关系

2.要有相互引用的关系

3.查看内存图形

5. 关键字

5.1 this

表明当前对象自己

有时候须要把当前调用对象进行传递,那么就可使用this替代当前调用对象

在构造器中可使用this([参数])调用本类的其余构造器

5.2 super

指代父类

super() 调用父类的构造器

super()若是放在子类中调用,只能放在子类构造器代码的第一行

5.3 new

只要使用new关键字,就是建立一个新的对象

要注意一个问题.不要以为有时候参数须要一个对象,就直接new 一个对象传过去

5.4 static

1.静态的属性和静态的方法属于整个类

2.静态的值只有一个(基本数据类型能够看出此特色)

3.静态的值只会初始化一次(引用数据类型)

4.静态属性,方法或者静态块会在jvm加载的时候就加载

5.静态变量不能加在方法里面

6.静态方法不能重写

通常状况下,静态的常量属性,咱们通常写为 public static final 数据类型 大写常量名 = 值

5.5 instanceof

判断某个对象是否是某一个类型

5.6 final

1.能够用来修饰变量,若是修饰变量,这个变量咱们就称之为常量,值不能被修改,并且常量必须赋初始值,通常状况下,常量咱们会定义为 public static final 数据类型 大写常量名 = 值

2.若是final修饰方法,表示这个方法不能被重写(实现)

3.若是final修饰类,表示这个类不能被继承

5.7 Object

全部类的父类

6 .类和类的关系

组合(has-a):一个类是另外一个类的属性

依赖(user-a):一个类是另一个类方法的参数

7 .抽象类(abstract)

1.抽象方法必定在抽象类中

2.抽象类和抽象方法确定是被abstract修饰的

3.抽象类不能够用new关键字实例化,实例化一个抽象类没有任何意义

4.若是必定要用抽象类,那么可使用多态的方式

5.虽然抽象类不能实例化,可是也是有构造器的

6.抽象方法不能被private修饰

7.抽象方法不能被static修饰

总结:1.抽象类就是用来被继承的 2.抽象方法就是用来被实现的 3.实现多态

8. 接口(interface implements)

1.接口中的变量所有是静态常量

2.接口中的方法默认是抽象方法

3.JDK1.8以后能够手动声明默认方法和静态方法

4.接口能够多实现,一个类能够实现多个接口

5.接口与接口之间使用extends

6.一个子类能够继承一个父类,实现多个接口

相关文章
相关标签/搜索