持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第30天。
继承
定义
继承是面向对象程序设计的重要概念,是子类继承父类的特征和行为,使得子类具有与父类相同的行为。
格式:
class 父类 { }
class 子类 extends 父类 { }
继承的类型
Java 不支持多继承,但支持多重继承,具体的概念看下图了解:
继承的特性
- 子类拥有父类非 private 属性和方法
- 子类也可以拥有自己的属性和方法
- 可以重写父类的方法
继承的关键字
可以使用 extends 和 implements 这两个关键字来实现继承。所有的类都是继承于 java.lang.Object,当一个类没有继承的两个关键字,则默认继承object(这个类在 java.lang 包中,所以不需要 import)祖先类。
(1)extends 单一继承,一个子类只能有一个父类
public class Animal {
private String name;
private int id;
public Animal(String myName, int myid) {
//初始化属性值
}
public void eat() {
//吃东西方法的具体实现
}
public void sleep() {
//睡觉方法的具体实现
}
}
public class Penguin extends Animal{ }
(2)implements ,接口实现,可以同时继承多个接口,接口与接口之间用逗号分隔
public interface A {
public void eat();
public void sleep();
}
public interface B {
public void show();
}
public class C implements A,B { }
多态
多态是同一个行为具有多个不同表现形式或形态的能力。它是同一个接口,使用不同的实例执行不同操作:
多态的三个必要条件
- 继承
- 重写
- 父类引用指向子类对象:Parent p = new Child();
当使用多态方式调用方法时,首先检查父类中是否有该方法,如果没有,则编译错误;如果有,再去调用子类的同名方法。
多态的好处:可以使程序有良好的扩展,并可以对所有类的对象进行通用处理。
封装
封装是将抽象性函式接口的实现细节部分包装、隐藏起来的方法。
它可以让程序代码更容易理解与维护,增强程序的安全性。
优点
- 降低耦合度
- 自由修改内部结构
- 对成员变量进行精确控制
重写与重载
重写
子类对父类方法的重写,返回值和形参都不能改变,子类可以根据需要实现父类的方法。
- 声明为 final 的方法不能被重写
- 声明为 static 的方法不能被重写,但是能够被再次声明。
重载
重载是一个类里,方法名字相同,参数不同,返回类型可相同也可不同。 每个重载的方法必须有一个第一无二的参数类型列表。 最常用的地方就是构造器的重载。
重写与重载之间的区别
区别点 | 重载方法 | 重写方法 |
---|---|---|
参数列表 | 必须修改 | 一定不能修改 |
返回类型 | 可以修改 | 一定不能修改 |
异常 | 可以修改 | 可以减少或删除,一定不能抛出新的或者更广的异常 |
访问 | 可以修改 | 一定不能做更严格的限制(可以降低限制) |
Java 包
为更好的组织类,Java 提供了包机制,用于区别类名的命名空间。
作用
- 把功能相似或相关的类或接口组织在同一个包中,方便类的查找和使用
- 采用树形目录的存储方式。同一个包中的类名是不同的,不同的包中类名可以相同。当同时调用两个不同的包中的相同的类名时,应加上包名加以区别,避免名字冲突
- 包也限定了访问权限,拥有访问权限的类才能访问某个包中的类。