面向对象的三大特征:封装、继承、多肽

面向对象的三大特征:封装、继承、多肽

一、封装
封装的体现—方法;
属性私有化,通过公共的访问方式去进行正常的取值和赋值,提高数据的安全性。

二、继承
1.概念
多个类中有相同的内容,把相同的内容抽取到一个新的类,此时通过extends使得原来的类与新类之间就产生了继承关系,原来的类就称之为子类、派生类,新类就称之为父类、超类、基类—只能获取父类部分信息。
2.单继承与多继承(看场景)a b c 多级继承
java支持单继承—子类只能有一个父类,父类可以有多个子类;避免出现方法的混用,提高代码的复用性
C语言支持多继承—极高的提升代码复用性

Class A{
	m(){}
}
Class B{
	n(){}
}

Class C extends A,B---->n(),m()
Class A{
	void m(){}
}
Class B{
  int m(){return 1;}
}

Class C extends A,B--->?=c.m();会产生方法的混用

3.重写(覆盖)
在父子类中发生方法签名一致的方法,遵循重写原则:(两等两小一大)
①.方法签名相等
②.如果父类的方法的返回值是基本数据类型/void,那么子类的方法的返回值就和父类相等

Class A{
	public int m(){return 1;}
}

Class B extends A{
	public int m(){return 2;};
}

③.如果父类的方法返回值是引用数据类型,子类的方法返回值数据类型要么和父类一致要么是父类的子类

Class A{}
Class B extends A{}
Class C{
	Public A m(){return null;}
}
Class D extends C{
  public A/B m(){return null;}
}

所有的基本数据类型都是同一数据级别

④.子类方法的访问权限修饰符要么和父类一致要么大于父类的范围

Class A{
	void m(){}
}
Class B extends A{
	Protected void m(){}
}

在这里插入图片描述
子类拿不到父类的私有信息,构造代码块以及构造方法

4.super
指代父类对象的引用,可以调用父类的属性和方法。
super语句—在子类构造方法中调用父类构造方法,在子类构造方法中,如果没有定义任意形式的super语句,JVM就会默认添加super()去调用父类的无参构造;如果父类没有提供无参构造,子类每个构造方法就要定义对应形式的super语句,在首行—父类对象优先于子类对象 。
执行顺序:父类的构造代码块–>父类构造方法–>子类的构造代码块–>子类构造方法

建议:
未来做开发, 基本不会自己写构造方法,都用默认构造方法,要了解构造方法。

三、多态
1.概念
在代码的使用过程中可以具有灵活的展现形式

从时期的角度,分析多态,编译时期和运行时期
编译时期多态—在编译时期绑定代码 重载
public static void m(int i){}
public static void m(int i,int j){}
运行时期多态—在运行时期绑定代码 重写,向上造型 前提是继承

2.向上造型
向上造型创建的对象能调用哪些方法看父类,方法的具体执行看子类(父类—目录,子类—正文)

3.对重写原则的解释
①.子类的方法的访问权限修饰符要么和父类一致要么大于父类的范围
反证

Class A{
	public void m(){}
}
Class B extends A{
	void m(){}
}

A a=new B();//向上造型创建出了对象
a.m();//声明类是A,此时对象就可以调用A类的m方法,这个方法可以在任意位置调用
		  //方法的执行看子类,此时对象真实调用的B类的m方法,这个方法可以在同包类位置可以调用
	 前后结论有矛盾

②.如果父类的方法的返回值是引用数据类型,子类方法的返回值数据类型要么和一致要么是父类的子类
反证

Class A{}
Class B extends A{}
Class C{
	public B m(){return null;}
}
Class D extends C{
	public A m(){return null;}
}
C c=new D();//向上造型
B b=c.m();//声明类是C类调用的m方法返回的是B类,b对象就可以调用B类中的所有信息
A a=c.m()//方法的具体执行看子类是D类调用m方法返回的是A类,a对象可以调用A中所有的信息
	结论有矛盾

4.优点
统一调用 ,解耦(降低耦合度 高内聚低耦合)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值