熟悉java面向对象编程思想,谈谈java中的面向对象编程思想

java对象

英语:Object-oriented programming,缩写:OOP;

我们开发的程序是给用户使用的,而我们的程序是使用对象来完成产生的。对象可以看成是对问题的描述的一种解决方案,它与问题空间之间一一映射。也就是将问题抽取成为对象集合。

在java中以class关键字来定义类的对象,类包含了元素和功能,是一种引用类型,和Int、Float等类型是一样的道理,只不过Int、Float等这些基本类型是java内置了的,所以我们可以拿来即用,而我们自定义的对象需要我们进行实例化后使用。

java面向对象的服务提供者

我们可以将对象看作服务提供者,比如手机这个对象,我们可以用它来聊天,打开闪光灯,砸核桃等。

b548cf65806ad71885d9ee155a892e9d.png

OOP 面向对象

当每个对象都有各自独特的服务的时候,我们在使用的时候就很方便高效了,我们知道要实现什么功能,就拿什么对象来使用,如果我们对多个对象的各个方面都“组合”的很好的话,那么对代码来说是高内聚的,我们都约定俗成开发程序高内聚是我们追求你之一。

java面向对象的封装

假设在合作开发的时候,有人负责创建类来提供服务,有人收集使用类来快速实现程序开发,我们把第一种人暂且叫类(服务)创建者,第二种人叫做使用服务(类)者。

那么在这种情况下,创建者对自己的类只需要暴露必需的功能给使用者就可以了,使用者无需关心创建者是怎么样实现类的细节,拿来用就好了。这样创建者会对比较“脆弱”的代码进行封装,使用者无法触及,防止使用者随意修改,减少了bug的产生,还有就是创建者对封装的这些代码修改不会对使用者造成影响,比如类创建者在一开始创建类的时候某功能写的简单了,后来为了提高性能,那么修改这部分代码,实际上对使用者是毫无影响的。

java用private关键字来限定只有类创建者和类内部方法可以使用,其它人都无法使用。

如果是使用public修饰的话就相当于完全暴露了,任何人都可以使用。

还有protected是让继承的子类可以使用,但是不能使用父类被private修饰的属性。

默认不指定修饰的时候,同一包下的其它成员都可以访问。

所以封装是有必要的,在这种分离的情况下,提高了安全性。

java对象组合

一个对象含有另一个对象,这就是组合。 比如手机这个对象含有相机对象,我们创建了相机对象,可以内置于手机对象中,这样做的好处是使用对象间灵活高效的。

49096045d921e6bf676ce1c0be7df7e5.png

代码提现:

1

2

3

4

5public class Phone{

private Camera camera;

}

java面向对象的继承

当你发现对象之间存在诸多相似性的时候,并不需要每个都创建独立的对象,可以找出他们的相同点作为基类(父类),进而在衍生出差异的类(子类),这样子父类就包含子类所有共享的行为特性了,子类就以不同的实现方式存在。

java面向对象的多态

狗可以称为动物,猫可以称为动物。多态在于你可以不在意具体对象类型而使用它们共同的属性:

代码提现:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41public class Animal{

public void eat()

{

System.out.print("吃东西。。");

}

}

public class Dog extends Animal{

@Override

public void eat(){

System.out.println("吃骨头");

}

}

public class Cat extends Animal{

@Override

public void eat(){

System.out.println("吃鱼");

}

}

public class Main{

public static void main(String[] args){

Dog dog = new Dog();

Cat cat = new Cat();

eatSome(dog);

eatSome(cat);

}

static void eatSome(Animal animal)

{

animal.eat();

}

}

1

2

3

4输出:

吃骨头

吃鱼

在这里可以看到dog和cat向上转型为Animal。向上转型是安全的,向下转型却是危险的,例如将Animal转为它的子类,因为此刻Animal既不知道是Dog还是Cat,所以向下转型还需要专门指定对象,即强制转换。

对象存储

因为java是在运行时才能确定对象的多少,所以有了动态存储对象的集合,集合提供了不同的接口和行为,它们之间效率不同,应用场景不同:Java 细数各种常见的集合

对象生命周期

对象的生成会占用内存资源的,所以需要销毁来释放内存资源,对象是在堆的内存池中动态创建的,java有一个专门的垃圾回收器,它知道对象在什么时候可以销毁,会自动的销毁从而释放资源且不会影响程序的正常运行。

相关资料

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值