面向对象
2022-08-15 08:19:04 3 举报
AI智能生成
Java面向对象
作者其他创作
大纲/内容
面向对象的三大特性
继承
子类继承父类
Java中只能单继承
单继承复用代码有限,而且使用继承的话业务拓展时会导致继承链越变越长,不利于后期维护
super关键字
super.指向当前对象的父类对象
super.不能省略的情况
子类的方法或属性与父类的方法或属性同名时,想调用父类的属性或方法,这时需要加super.
super()
调用父类构造器,子类的每个方法中都会隐式的存在一个super()。
调用父类构造器的目的是:保证父类被加载到内存中,因为子类要用父类中的方法和属性,所以子类在内存中时,父类一定在内存中
object类(基类)(超类)(根基类)
object类是所有类的根基父类,当一个类没有显式的继承关系时,默认会继承object类
object类中的常用方法
getClass()
用于反射,用来获取某个对象的Class对象
hashCode()
用于集合中,生成一个对象的唯一值(哈希码)
clone()
配合克隆模式一起使用,专门用来创建对象
notify()
notifyAll()
wait()
waitAll()
wait(long timeout, int nanos)
equals(Object obj)
toString()
通过System.out.println();输出对象的时候,会默认调用Object类中的toString方法,Object类中的toString方法会打印输出当前对象所属类的名称+@+hash值转换的十六进制字符串。也可以自己在当前类中重写toString方法
重写
重写发生在父类与子类中,子类对父类的方法不满意,就重写父类的方法
注意事项
重写要发生继承关系才可以重写
方法头,返回值与父类中的方法完全一致
判断方法是否重写:在方法上+@Override
重载和重写的区别与联系
区别
重载发生在同一个类中,方法名相同,参数列表不同,重载只和方法名和参数列表有关,和其他都无关
重写发生在子类和父类中,修饰符,方法名,参数列表必须都相同,父类权限修饰符要小于等于子类、返回类型要大于等于子类
联系
他俩都是方法。。。
封装
隐藏想隐藏的,暴露想暴露的
通过权限修饰符控制
public
所有位置都可以访问
protected
异包下无继承关系的不可以访问
默认
同包内可以访问
private
本类可以访问
权限修饰符可以修饰类、方法、成员变量、构造器
多态
构成多态的三要素
继承
重写
父类对象指向子类引用
多态和属性无关,和方法有关
父类引用指向子类对象
左编译,右运行
抽象类
被abstract修饰的类叫做抽象类,用来被继承
抽象方法
被abstract修饰的方法叫做抽象方法
抽象方法只有声明没有方法体
抽象类不能创建对象,不能实例化
抽象类中可以定义构造器,但是构造器不是用来创建对象用的,是用来给子类实例化用的
抽象类中可以定义普通方法也可以定义抽象方法
抽象类中的抽象方法子类必须重写,或者子类也变成一个抽象类
接口
接口中可以定义的内容
变量
默认被(public static final)修饰,所以必须要初始化
接口中不可以定义构造器,但是可以通过匿名内部类实例化
方法
接口中的方法都是抽象方法,默认用public abstract修饰
public abstract void a();
也可以定义普通的静态方法,拥有方法体
public static void a(){}
JDK1.8之后,可以定义default方法,可以有方法体
default void a(){}
接口与类的关系
实现:A implements B
需要让A类重写B中所有的方法
final关键字
final修饰变量
常量(防止修改)
final修饰方法
方法不能被重写
final修饰类
类不能被继承
static关键字
可修饰
类,属性,方法,代码块
不可修饰
构造器
static修饰属性
1.在类加载的时候一起加载入方法区的静态域中
2.先于对象存在
3.访问方式:类名.属性名
static修饰方法
1.静态方法中不能执行非静态的属性
2.静态方法中不能访问非静态的方法
3.静态方法中不能使用this关键字,静态方法先于对象存在,this是指向对象的
调用方式:
1.非静态的方法通过对象名.方法名调用
2.静态方法通过类名.方法名调用
3.同一个类中可以直接调用
static修饰代码块
被static修饰的代码块叫做静态代码块
静态代码块中只能使用静态属性、静态方法
位置
类中,方法外
执行顺序
静态代码块
构造块
构造器
方法中的普通块
static修饰的内容隶属于类,类加载到内存中时静态内容也一起加载到内存,并且只加载一次
非静态内容隶属于对象,在对象创建后才会存在
this关键字
this.指向当前对象的(属性)(方法)
当出现局部变量和成员变量名字相同时不可省略
this()用于调用构造器,复用构造器的逻辑
必须要放在构造器的首行
面向对象与面向过程的区别和联系
面向过程
注重步骤,每一步的具体实现方法是什么
面向对象
不关注具体功能是怎么做的,只关心谁能做,注重能完成这个功能的对象
面向过程与面向对象的联系
通过面向对象处理整个业务,确定需要哪些对象,然后通过面向过程的方式具体编写对象的功能,如何实现功能
类
类是一个抽象的,指一群具有相同特征的集合
对象
对象是具体的,是一个类中某个具体的实例
new关键字
创建对象
开空间(4个字节)
在堆内存中开辟存储空间
初始化
为堆中的成员变量初始化
指向引用
构造器
构造器是一个特殊的方法
方法名与类名相同
构造器声明时不需要写返回值
一个类中默认会存在一个空参构造器,但如果在类中声明其他带参构造器,空参构造器就不存在了
构造器支持重载
0 条评论
下一页