美文网首页Java互联网科技
想学Java?只要一篇就让你瞬间了解java的三大特性

想学Java?只要一篇就让你瞬间了解java的三大特性

作者: Java码农石头 | 来源:发表于2020-04-22 13:17 被阅读0次

前言:Java作为面对对象编程,相对于C语言来说,拥有三大特性,封装,继承,多态,那么这三个特性到底有什么意义?

java之父——詹姆斯·高斯林

首先是封装

对于某个对象,Java隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读取和修改的访问级别。

那么这是什么意思呢,就是说对于一个对象,不去直接修改他的属性,而是有相应的方法,当你想要操作的时候,只需调用方法即可。

这样可以把对象的数据和行为相结合,形成一个有机的整体,我们称之为类。

以下面的一段代码为例:

public class Admin {

    private String id;                //编号

    private String name;          //姓名

    private String password;      //密码

    private String extend;        //权限

    void setID(String id) {

        this.id=id;

    }

    void setName(String name) {

        this.name=name;

    }

    void setPassword(String password) {

        this.password=password;

    }

    void setExtend(String extend) {

        this.extend=extend;

    }

    String getID() {

        return this.id;

    }

    String getName() {

        return this.name;

    }

    String getPassword() {

        return this.password;

    }

    String getExtend() {

        return this.extend;

    }

    void say() {

    System.out.print("Chinese");

}

}

对于Admin类来说,他有4个属性,这4个属性都是私有的,其他的成员不能直接访问,其他的成员想要修改或者对Admin的属性赋值,就需要使用Admin类的方法。

可以看到每个属性都有相对应的getset方法,当想要获取属性的值的时候,调用get方法,当想要修改属性值时,可以调用set方法。

上面是对象的数据,还有对象的行为,可以看上面代码的最后一个方法,say函数是一个人说什么语言,对应的是这个对象的行为。

对于想要实现的操作,一个类已经将其封装好,你只需调用方法即可,这正是面对对象编程的精髓。

通过封装使一部分成员充当类与外部的接口,而将其他的成员隐蔽起来,这样就达到了对成员访问权限的合理控制,使不同类之间的相互影响减少到最低限度,进而增强数据的安全性和简化程序的编写工作。

结论:封装能够提高代码的可复用性和安全性,所以在写代码时应尽量提高代码的封装程度。

继承

听这名字肯定就有一些想法,继承可以使得子类具有父类的属性和方法或者重新定义、追加属性和方法等。

这样可以使代码的复用变的十分简单,我可以定义一个子类,拥有父类的所有属性和方法。同时,子类也可以重新定义方法,追加属性和方法,可以很大程度的减少工作量。

以一下代码为例:

现在有一个父类Animal

public class Animal {

public void getColor() {

System.out.println("Animal:color");

}

public void getName() {

System.out.println("Animal:name");

}

}

有两个子类Dog

public class Dog extends Animal{

public void getColor() {

System.out.println("Dogcolor");

}

public void getName() {

System.out.println("dogname");

}

public void bark() {

System.out.println("狗叫汪汪");

}

public void set() {

this.getColor(); //调用子类方法

super.getColor(); //调用父类方法

this.bark();

}

}

Cat:

public class Cat extends Animal{

public void getColor() {

System.out.println("catcolor");

}

public void getName() {

System.out.println("catname");

}

public void jump() {

System.out.println("猫会跳");

}

public void set() {

this.getColor(); //调用子类方法

super.getColor(); //调用父类方法

this.jump();

}

}

调用Dog类的set方法后的运行结果

调用Cat类的set方法后的运行结果:

从程序中可以看出,可以使用super关键字来实现对父类方法的实现。

一个父类可以拥有多个子类,而一个子类只能拥有一个父类,这是显而易见的。

而一个子类可以拥有其他子类,对于他的子类来说,他就是父类。

比如,现在有一个Cat的子类BlackCat

public class BlackCat extends Cat{

public void getColor() {

System.out.println("黑色");

}

public void set() {

this.getColor();

super.getColor();

}

}

运行结果:

继承的特性

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

2.子类可以拥有自己的属性和方法,即子类可以对父类进行扩展。这一点从代码中也可以看出来,Dog类有Bark方法,Cat类有Jump方法。

3.子类可以用自己的方式实现父类的方法。可以用this关键字实现本身方法,用super关键字实现父类方法。

4.ava 的继承是单继承,但是可以多重继承,单继承就是一个子类只能继承一个父类,多重继承就是,例如 A 类继承 B 类,B 类继承 C 类,所以按照关系就是 C 类是 B 类的父类,B 类是 A 类的父类,这是 Java 继承区别于 C++ 继承的一个特性。

5.提高了类之间的耦合性(缺点)。

多态

多态,顾名思义就是多种状态的意思。简单来说就是同一个接口使用不同的实例来执行不同操作抽象一点:猫和狗都会叫,但是它们叫的声音不一样。

多态的存在必须满足一下条件:

1.继承(extends或implements)

2.重写(override)

3.父类引用子类对象

多态的优点:

1.消除类型之间的耦合关系

2.可替换性

3.可扩充性

4.接口性

5.灵活性

6.简化性

以下面的代码为例:

public class Animal {

String color;

String name;

public void Call() {

System.out.println("动物叫");

}

public void getName() {

System.out.println("动物名");

}

}

class Cat extends Animal{

public void Call() {

System.out.println("喵喵喵");

}

}

class Dog extends Animal{

public void Call() {

System.out.println("汪汪汪");

}

public static void main(String []args) {

Animal dog = new Dog();

Animal cat = new Cat();

dog.getName();

dog.Call();

cat.Call();

}

}

运行结果:

可以看到同样的行为Call在不同的对象Dog和Cat有着不同的表达。以上就是我对多态的简单理解。

原文作者:张宜强

原文链接:https://blog.csdn.net/qq_41505957/article/details/105652317

相关文章

网友评论

    本文标题:想学Java?只要一篇就让你瞬间了解java的三大特性

    本文链接:https://www.haomeiwen.com/subject/qzpmihtx.html