面向对象的重点知识:
1、类和对象
2、构造方法
3、访问权限
4、继承
5、多态(最重要)
6、抽象与接口
7、内存分析
还有一些相对来说不是很重要的点,以上是这些点是重中之重
面向过程:侧重的是过程
-
优点:简单
-
缺点:代码量大了之后,维护性非常差
例如:把大象放进冰箱需要几步
第一步:打开冰箱门
第二步:把大象放进去
第三步:关上冰箱门
面向对象:侧重的是对象,你是上帝视角
面向对象是一种认识事物的方法,是 一种以对象为中心的思维方式
对象:世界上所有的事物都可以称为对象,万物皆对象
对象可以是有生命的或无生命的,例如:青蛙、账号等
-
优点:可扩展性非常强,维护成本低
-
缺点:新手上手难
例如:把大象放进冰箱需要几步
创建一个大象,告诉大象,进冰箱,至于怎么进冰箱我们不用管,是大象自己完成
类和对象
例子:造车
1、画图纸
(1)定义车的属性信息:颜色:color、速度:speed、座位:seat
(2)定义车的动作:跑
2、拿着图纸去造车
面向对象的世界中:
-
类:是一类事物的统称,例如人、猫、树;造车的图纸就是类
属性:一类事物拥有的共同属性,也叫静态特征——变量
动作:一类事物共同能执行的功能,也叫动态特征——方法
-
对象:使用类创建的具体的某一个东西
对象可以干什么完全是由类决定的
注:
(1)类要使用class来定义
(2)属性:成员属性(成员变量):直接写在类中的变量
局部属性(局部变量):写在方法中的变量,只可以在定义该变量的方法中使用
(3)动作:成员方法,不写static的就是成员方法
(4)创建对象:类 引用 = new 类();
定义类的语法:
修饰符 class 类名(){
类的内容
}
定义方法的语法:
修饰符 返回值类型 方法名(){
方法体
}
注:返回值可以是基本数据类型和引用数据类型,如果没有返回值则写void
public void inputName(){
System.out.println("张三");
}
成员变量和局部变量
变量在不同的位置声明,可以使用的作用范围也不一样,称为变量的作用域
一、成员变量(全局变量):在类中声明的变量、整个类中都可以访问使用
二、局部变量:在方法或代码块中声明的变量,在对应的方法或代码块中才可以访问使用
三、成员变量和局部变量的区别
(1)作用域不同 ◆局部变量的作用域仅限于定义它的方法 ◆成员变量的作用域在整个类内部都是可见的 (2)初始值不同 ◆ Java会给成员变量一个初始值,整型是0,浮点型是0.0,字符串是null ◆Java不会给局部变量赋予初始值
注意: 在同一个方法中,不允许有同名局部变量 在不同的方法中,可以有同名局部变量 在同一个类中,成员变量和局部变量同名时,局部变量具有更高的优先级
包
一、包的作用:分类型管理所有的类
例如:图书馆的书架,后勤室的柜子,快递室的柜子等
二、JDK提供基本包
(1)java.lang :虚拟机自动引入
(2)java.util :提供一些实用类
(3)java.io:输入、 输出
三、使用MyEclipse创建包的两种方法
(1)分别创建包和类
(2)创建类的过程中创建类所在的包
四、使用idea创建包
先建包再建类
五、导包
(1)一个类同时引用了两个来自不同包的同名类,必须通过完整类名来区分,且不需要用import导入语句
cn.com.oop.Dog dog1=new cn.com.oop.Dog();
cn.com.oop.pet.Dog dog2=new cn.com.oop.pet.Dog();
(2)每个包都是独立的,顶层包不会包含子包的类
cn.com.oop.*表示的是cn.com.oop中的所有类和接口,但不包含cn.com.oop.pet包和其中的类与接口
cn.com.oop.pet.*才是表示cn.com.oop.pet中的所有类
(3)package和import的顺序是固定的
package必须位于第一行(忽略注释行)
只允许有一个package语句
其次是import语句(可以多句)
接着是类的声明
访问权限
一、JAVA中有四种访问权限:private,protected,public,还有就是什么都不写。
public:公共访问权限,所有的类都可以访问,无论在不在一个包中。
default(默认):是包访问权限,也就是说在同一个包类就可以访问。
protected:是继承访问权限,在同一个包中的可以访问,对于不在同一个包中的类,如果该类是父类的子类,则可访问。不再同一个包中的不是继承的类就不可以访问。
private:私有访问权限,只有在同一个类里才能访问。
默认变量和protected变量的共同点是在同一个包中都可以访问,但是如果不在同一个包中,但是有继承关系,protected变量就可以访问。但默认变量只要是不同的包,无论有没有继承关系都不能访问。
同一个类中 | 同一个包下其他类中 | 任意包下子类中 | 任意包下的任意类中 | |
---|---|---|---|---|
public | √ | √ | √ | √ |
protected | √ | √ | √ | |
默认(default) | √ | √ | ||
private | √ |
二、访问权限控制
(1)类的访问控制:
①public
②默认
(2)类成员的访问控制:
①private
②protected
③默认
④public