Java学习之三大特性

Java的三大特性是Java开发中最基础也是最重要的概念。

封装是 Java 类的编写规范
继承是类与类之间联系的一种形式
而多态为系统组件或模块之间解耦提供了解决方案
一、封装
封装符合面向对象设计原则的第一条:单一性原则,一个类把自己该做的事情封装起来,而不是暴露给其他类去处理,当内部的逻辑发生变化时,外部调用不用因此而修改,他们只调用开放的接口,而不用去关心内部的实现。

封装隐藏了类的内部实现机制,可以在不影响使用的情况下改变类的内部结构,同时也保护了数据。对外界而已它的内部细节是隐藏的,只提供符合开发者意愿的公有方法来访问这些数据和逻辑。

示例代码:

public class Dog{
    private String name;//狗狗的名字
    private Sring sex;//狗狗的性别
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public Sring getSex() {
        return sex;
    }
    public void setSex(Sring sex) {
        this.sex = sex;
    }
    
}

使用 private 修饰符把成员变量设置为私有,防止外部程序直接随意调用或修改成员变量,然后对外提供 public 的 set 和 get 方法按照开发者的意愿(可以编写一些业务逻辑代码,虽然很少这样做)设置和获取成员变量的值,控制属性访问权限,不是想改就能改

二、继承
为什么需要继承:继承可以代码复用,最重要的还是所谓向上转型,即父类的引用变量可以指向子类对象,这是Java面向对象最重要特性多态的基础。Java 的继承机制是单继承,即一个类只能有一个直接父类。继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以增加新的数据或新的功能,也可以用父类的功能。

在使用继承时的特点:

1、子类拥有父类非private的属性和方法。

2、子类可以拥有自己属性和方法,即子类可以对父类进行扩展。

3、子类可以用自己的方式实现父类的方法。

public class Dog{
    public void cry(){
        System.out.println("狗狗在叫");
    }
}

public class JinmaoDog extends Dog{
    public void cry(){
        System.out.println("金毛狗狗在叫");
    }
    public static void main(String[] args) {
        Dog dog = new JinmaoDog();
        dog.cry();
    }
}

PS:子类中重写父类的方法后可以使用super.方法名调用执行父类的方法,比如在JinmaoDao类的cry方法中可以使用 super.cry();

注意:如果父类的方法为final的,则不能重写该方法。

三、多态
多态指允许不同类的对象对同一“消息”做出响应。即一个引用变量倒底会指向哪个类的实例对象,该引用变量发出的方法调用到底是哪个类中实现的方法,必须在由程序运行期间才能决定。

一个方法可以由修饰符、返回值、方法名、参数等几部分构成,其中只有方法名和参数是唯一性标识,也就是说只要方法名和参数相同那就是相同的方法,所谓参数相同,是指参数的个数,类型,顺序一致,其中任何一项不同都是不同的方法。

代码示例:

public class Dog{
    public void cry(){
        System.out.println("狗狗开始叫");
    }
    public void cry(int i){
        System.out.println("狗狗叫了" + i + "个小时");
    }
}

一个类中方法名相同,方法参数的个数和类型不同,通过个数和类型的不同来区分不同的函数叫做方法重载。

方法的重写(Overriding)和重载(Overloading)是java多态性的不同表现,重写是父类与子类之间多态性的一种表现,重载可以理解成多态的具体表现形式。

三大特性总结:

1、封装实现了专业的分工,隐藏信息,实现细节。通过控制访问权限可以将信息隐藏起来。

2、继承提高代码复用率,避免重复代码的出现,当父类提供的方法无法满足子类的需求时,子类可以重写父类的方法,实现自己的需求。

3、多态消除类型之间的耦合关系,相同的事物,调用相同的方法使用相同的参数,但是表现的行为不同。

如果你觉得好不妨转发分享出去
你也可以关注我
文章都会同步到公众号

Java学习之三大特性_第1张图片
1555779568162.jpg

你可能感兴趣的:(Java学习之三大特性)