封装
1、把对象的属性、行为封装起来,其载体是类。
属性封装:private 私有化
行为封装:方法,封装的是一个独立的功能,一段代码。
对于调用者来说,隐藏了实现细节;暴露一些方法的签名供开发者调用。
2、广义的封装
组件封装:对方给你开放了接口,你按照它规定的格式,把数据传给它,它计算完,并把结果返回。
例如:第三方组件、支付宝、网银支付。。。。
系统封装:对使用者来说,不知道实现细节,但是知道怎么用。
标准的javaBean
(1)属性私有化
(2)提供get/set方法
(3)保留无参构造
继承(延续:相同点、扩展:特有点)
为什么有继承?
1、为了代码复用和功能扩展
如何实现继承?
[修饰符] 子类名 extends 父类名{}
继承的特点?
1、java只支持单继承。
2、java支持多层继承。
3、父类可以有多个子类。
4、子类会继承父类所有的属性和方法,但是如果修饰符为private,虽然继承过来了,但是不可见。
5、子类不会继承父类的构造器。
6、子类的构造器一定会调用父类的构造器。并且默认调用父类的无参构造器。当父类没有无参构造器时,需要在子类中,手动调用父类的构造器:super(实参列表);
为什么调用父类的构造器??
重写(override)
定义:在子类中重写继承自父类的方法,方法名和参数列表相同,方法实现不同
- 特点
- 方法名:完全相同
- 形参列表:完全相同
- 返回值类型
- void或者基本数据类型时:完全相同
- 引用数据类型时:返回父方法类型,或者父方法返回类型的子类。
- 修饰符
- 权限修饰符
- 重写方法的修饰符 >= 被重写方法的修饰符
- 注意:父类方法不能是private,子类中不可见
- 其他
- 抛出的异常列表
多态
为了代码更灵活
实现多态的前提是继承。
多态:就是父类引用指向子类对象。(编译看左,运行看右)
解惑?
1、Overload与Override的区别
Overload:重载 load的英文意思是载入,装载
Override:重写
Overload概念:表示在同一个类中,出现了方法名相同,形参列表不同的两个或多个方法,称为方法的重载。注意与返回值无关。
Override:当子类继承父类时,会继承父类中的所有方法,但是父类的某个方法的实现不适用于子类,那么子类就重写该方法。
重写要求:
方法名:必须完全相同
形参列表:必须完全相同
返回值类型:1、如果是void、基本数据类型,则要求返回类型完全一样
2、如果父类方法返回类型时引用类型,则子类方法返回类型<父类方法返回类型。
2、java为何设计单继承?而不是多继承呢?接口为什么能多实现呢?
①从技术角度讲,降低复杂性。
类A有一个m()方法,类B有一个m()方法,而类C继承A,B;此时会发生问题,就是不确定继承哪一个m()方法。至于接口为啥是多实现呢?难道接口中的变量(属性都是 static final修饰的,即常量)可以区分?在编译器,常量值不同时不能通过编译。所以属性肯定一样的。至于方法,接口中的方法都是抽象方法,需要实现该接口的类去实现方法,最终调用的是子类的方法;而继承则不一样,父类的方法也是可以调用的,例如super.m(),你就不能确定调用A?还是B类中的方法了。