1.面向对象的思想
与面向过程对比,看待问题的方式不同,面向过程--亲力亲为,面向对象--委托给别人
核心内容:类和对象
2.类和对象
类:具有特殊功能的实体的集合
对象:类中一个实实在在存在的个体
二者之间的关系:类是多个对象的抽取,对象是类的具体的存在
类的定义:class
类中成员变量和成员方法的定义
成员变量:全局变量,属性
局部变量:
成员变量和局部变量之间的区别:定义的位置,作用域,初始值,生命周期
静态成员变量和非静态成员变量:
静态方法和非静态方法:
规律:在同一个类中,在静态方法中只能访问静态成员变量和调用静态方法
在非静态方法中,访问静态成员变量和非静态成员变量,调用静态方法和非静态方法
对象的创建;new
引用变量:栈空间中
实际的对象:堆空间中
规律:跨类访问成员变量或者调用方法,
静态:类名. 对象.【不同的对象访问的是同一块的内存空间】
非静态:对象.
方法重载
重载规则:在同一个类中,方法名相同,参数不同【数量不同,类型不同】
构造方法
注意事项:
a.构造方法没有返回值
b.构造方法的方法名字其实就是类名
c.构造方法是在创建对象的过程中自动被调用,不能手动调用
构造方法的重载
a.系统会默认提供一个无参的构造方法
b.如果手动添加了有参的构造方法,系统将不再提供无参的构造方法
3.封装
私有化:private
好处:提高了数据的可复用性和安全性
get/set方法:间接访问
面试题:get、set方法不能使用static修饰的原因:二者主要针对成员变量进行获取值和赋值,如果成员变量是非静态的,则在静态方法中不能被访问
this
this:对当前对象的引用
this.属性:有参的构造方法,set方法
this.方法:可以省略的
this(参数):只能出现在当前类在当前类的构造方法中,表示调用其他的构造方法
static
静态代码块和构造代码块主要用于给成员变量赋值
执行顺序:静态代码块>main函数>构造代码块>构造方法
单例设计模式:懒汉式 饿汉式
4.继承
优点:提高了代码的可读性,提高代码的可复用性
使用继承:extends
特点:
a.子类可以继承父类中的【在访问权限内的】成员变量和方法
b.子类对象可以直接访问或者调用父类中的成员变量和方法
c.一个父类可以有多个子类,一个子类只能有一个父类【单继承】
d.构造方法不能被继承
super:肯定与父类有关
super.属性
super.方法
super(参数)
和this基本相同
访问权限修饰符
权限大小:主要为了重写
default:包权限
方法重写:
重写规则:
a.方法名相同
b.参数相同
c.返回值类型:相同,是父类返回值类型的子类
d.访问权限修饰符:大于等于
final
类:不能被继承
方法:不能被重写,但是可以重载,可以被调用
变量:这个变量是一个常量
成员变量:被final修饰,将不再提供初始值
基本数据类型和引用数据类型:只针对的是引用变量
Object类:Java中所有类的父类
hashCode()
equals()
抽象类 abstract
抽象类的特点:
抽象方法的特点:
抽象方法和普通方法之间的区别:
接口
接口的特点:
接口和抽象类的区别:
5.多态
体现形式:
父类的引用指向子类的对象
接口的引用指向实现类的对象
对象的向上转型:多态的体现
对象的向下转型:强制类型转换,instanceof
工厂设计模式:多态的应用
6.内部类
成员内部类和匿名内部类【掌握】