面向对象的三大特征

面向对象的三大特征

  • 继承
  • 继承
  • 多态

封装
面向对象的封装有两层含义
|-- 类,属性、方法这些定义在类
|-- 函数
为了安全考虑,在开发的过程中,会将属性私有化(private关键字修饰),需要提供对应接口完成设置和访问(公开的setter和getter方法)的过程。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

POJO对象(Plain Ordinary Java Object)
标准的java bean对象
根据封装来写
私有化属性
提供公开的setter和getter方法
至少两个或者以上的构造方法

私有化构造函数
|-- 工具类(静态方法或者静态属性)
|-- 单例模式

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

面向对象的专业术语:
OO(Oriented Object):面向对象
OOP(Oriented Object Programming):面向对象的编程
OOD(Oriented Object Design):面对对象的设计
OOA(Oriented Object Analysis):面向对象的分析
OOT(Oriented Object Test):面向对象的测试

面向对象的三大特征之二,继承
在面向对象中,类与类之间可以存在继承关系
在Java中,也存在继承,java是一种典型的单继承编程语言。

java如何实现继承:
extends
父类(超类、基类)
子类

注意:private修饰的属性和方法都是无法被子类继承的

protected修饰的方法,就是用来给子类继承!

继承的功能:
减少代码的重复,提高代码的复用度

方法重写(覆盖)
重写(OverWrite)
覆盖(OverRide)

发生在继承中,指的是,子类继承了父类方法后,该方法不能满足子类,重写该方法,已达到满足子类使用。

访问修饰符 返回值类型 名称一致() {

}
注:访问修饰符的权限可以放大,但是不能缩小
在这里插入图片描述
在这里插入图片描述
重载(OverLoad)

注解(annotation)
JDK5.0提供的新特性,利用反射技术,可以很轻松使用标注方法、属性、类等,从而扩展功能。

@Override // 覆盖,该方法就是重写方法
@Deprecated // 过时警告
@SuppressWarnning //压制警告

super关键字
super在java中,是一个指针,类似于this关键字
this关键字指向创建的每一个对象
super会自动指向父类

super(); // 调用父类的无参构造

对象的创建流程:
1、使用java命令将源码(.java)进行编译,生成字节码文件(.class)
2、javac命令执行字节码文件
3、将字节码文件加载进虚拟机(JVM),静态方法区开始加载静态资源
在这里插入图片描述

4、JVM从静态方法区读取主函数,并加载进栈(执行栈被创建了出来)
5、main函数开始执行, 创建对象的代码,如:Son son = new Son();
6、在堆内存中开辟对象的内存空间,并分配地址
7、创建成员变量并进行默认初始化
8、子类构造函数从非静态方法区加载进栈开始执行
9、第一句先执行父类的构造函数
10、父类构造函数执行,为子类继承到的成员变量进行初始化(对象内存空间里的父类空间)
11、父类构造函数弹栈执行完成
12、子类构造函数继续执行,此时先对成员变量进行显式初始化
13、再执行子类构造函数的内容,进行针对性初始化
14、执行完成,子类构造函数弹栈,将对象的内存空间地址赋予相应的引用变量

方法区:(Method Area)
元数据区:(Metaspace)

多态:
面向对象三大特征之一:
在继承基础上,才有多态
概念:父类引用指向子类实例

abstract class Animal{
	//由于每一个小动物的eat方式都不一样,因此在父类中无法准确描述eat的具体行为
	//因此只能使用抽象方法描述,从而导致这个类也为抽象类
	abstract public void eat();
	}
//描述狗,狗有吃饭,看家的行为
class Dog extends Animal{
	public void eat(){
		System.out.println("啃骨头");
	}
	public void lookHome(){
		System.out.println("看家");
	}
}
//描述猫,猫有吃饭,抓老鼠行为
class Cat extends Animal{
	public void eat(){
		System.out.println("吃鱼");
	}
	public void catchMouse(){
		System.out.println("抓老鼠");
	}
}

List list = new List(); // 创建List对象
List list = new ArrayList(); // 多态

在这里插入图片描述
多态的前提:
1、必须有关系:继承,实现
2、通常都有重写操作

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值