[Java学习]:面向对象

54 阅读3分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第30天。

继承

定义

继承是面向对象程序设计的重要概念,是子类继承父类的特征和行为,使得子类具有与父类相同的行为。

格式:

class 父类 { } 
class 子类 extends 父类 { }

继承的类型

Java 不支持多继承,但支持多重继承,具体的概念看下图了解:

image.png

继承的特性

  • 子类拥有父类非 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 { }

多态

多态是同一个行为具有多个不同表现形式或形态的能力。它是同一个接口,使用不同的实例执行不同操作:

image.png

多态的三个必要条件

  • 继承
  • 重写
  • 父类引用指向子类对象:Parent p = new Child();

当使用多态方式调用方法时,首先检查父类中是否有该方法,如果没有,则编译错误;如果有,再去调用子类的同名方法。

多态的好处:可以使程序有良好的扩展,并可以对所有类的对象进行通用处理。

封装

封装是将抽象性函式接口的实现细节部分包装、隐藏起来的方法。

它可以让程序代码更容易理解与维护,增强程序的安全性。

优点

  • 降低耦合度
  • 自由修改内部结构
  • 对成员变量进行精确控制

重写与重载

重写

子类对父类方法的重写,返回值和形参都不能改变,子类可以根据需要实现父类的方法。

  • 声明为 final 的方法不能被重写
  • 声明为 static 的方法不能被重写,但是能够被再次声明。

重载

重载是一个类里,方法名字相同,参数不同,返回类型可相同也可不同。 每个重载的方法必须有一个第一无二的参数类型列表。 最常用的地方就是构造器的重载。

重写与重载之间的区别

区别点重载方法重写方法
参数列表必须修改一定不能修改
返回类型可以修改一定不能修改
异常可以修改可以减少或删除,一定不能抛出新的或者更广的异常
访问可以修改一定不能做更严格的限制(可以降低限制)

Java 包

为更好的组织类,Java 提供了包机制,用于区别类名的命名空间。

作用

  • 把功能相似或相关的类或接口组织在同一个包中,方便类的查找和使用
  • 采用树形目录的存储方式。同一个包中的类名是不同的,不同的包中类名可以相同。当同时调用两个不同的包中的相同的类名时,应加上包名加以区别,避免名字冲突
  • 包也限定了访问权限,拥有访问权限的类才能访问某个包中的类。