Java小白记录学习路线(java基础)-----面向对象

面向对象

1.什么是面向对象?

面向对象:对象的含义是指具体的某一个事物,即在现实生活中能够看得见摸得着的事物。在面向对象程序设计中,对象所指的是计算机系统中的某一个成分。在面向对象程序设计中,对象包含两个含义,其中一个是数据,另外一个是动作。对象则是数据和动作的结合体。对象不仅能够进行操作,同时还能够及时记录下操作结果。

       上面的是百度的解释,面向对象一般只在意结果,不注重过程。举一个不是很恰当但很形象的例子:
       就比如说我想吃米饭,我想要自己去做,就需要选米,洗米,放进锅里,最后再放到碗里,这就类似于面向过程(不是很恰当),而我可以选择点外卖叫一碗米饭,这就是面向对象
       对象是对现实世界的某一事物的抽象描述,而且现实世界中的每种事物都可以用属性*(就是百度中的数据)*和功能(也就是百度中说到的动作)来描述,例如,一个杯子,他的颜色、大小、容量就是它的属性,它可以用来喝水就是它的功能
       我们解决实际生活中的问题就可以把某个事物看成一个对象,然后去分析它的属性及能力,这就是面向对象的研究

面向过程优点:性能比面向对象好,因为类调用时需要实例化,开销比较大,比较消耗资源。
缺点:不易维护、不易复用、不易扩展.
出处:https://www.jianshu.com/p/7a5b0043b035

面向对象优点:易维护、易复用、易扩展,由于面向对象有封装、继承、多态性的特性,可以设计出低耦合的系统,使系统 更加灵活、更加易于维护 .
缺点:性能比面向过程差
出处:https://www.jianshu.com/p/7a5b0043b035

2.面向对象的三大基本特征?

1.封装(private)
       上面我们说到了属性和功能,而封装的作用就是把他们组合成一个对象,好让我们去面向对象解决问题,我们可以看一个代码例子:

public class User {
	private String username;
	private String password;
	}

`在这个例子中我们看到一个用户类中有两个属性,都被private进行了封装,而此时的User就是一个封装类,我们可以使用里面的usernamepassword
2.继承(extends)
       继承就是表面意思,儿子继承父亲,只不过在编程语言里是类,是子类继承父类,父类是由多个子类的共有的属性和功能组成的,这样可以通过只写一个父类,然后用子类去继承父类的属性及功能,就会使程序整洁,效率高。并且子类可以重写父类的方法,例如(如果有看我博客的,可以自己写测试类运行一下):

public class Animal {
	String name;
	public void shot() {//动物叫声的方法
		System.out.println("动物叫声");
	}
}
public class Cat extends Animal {
@Override
public void shot() {//猫的叫声
	// TODO Auto-generated method stub
	System.out.println("喵喵喵");
}
//最后输出是“喵喵喵”

       子类还可以有自己独特的方法:

public class Cat extends Animal {
@Override
public void shot() {//猫的叫声
	// TODO Auto-generated method stub
	System.out.println("喵喵喵");
}
public void eat() {
	System.out.println("吃鱼");
}
//最后输出“喵喵喵”和“吃鱼”

       这就是继承的一些特点

***注意***:一个子类只能有一个父类,而一个父类可以有很多子类,这就像一个儿子只
能有一个父亲,而父亲却可以有很多儿子,是一样的道理

3.多态:
       对不同的对象,进行相同的操作,并产生不一样的结果,我们称这种情况为多态,而实现多态要满足三个必要条件:

1.有类继承或接口实现。
2.子类重写父类的方法。
3.父类对象引用子类的对象。	

必须要有这三个条件才能实现多态,这个可能比上面两个特征要更加抽象,因为有的时候我们不知道解决的对象是什么(对象可能不是我们自己创建的),就像是那种盲盒,你只有打开了才能知道,这就是多态的用法举个例子:

public class test01 {
public static void main(String[] args) {
	Animal an2=new Cat();//多态的写法
	an2.shot();	
	}
}
//输出是"喵喵喵"

这个是接着上面代码写的

面向对象五大基本原则?

五大基本原则

1.单一职责原则SRP(Single Responsibility Principle)

  指一个类的功能要单一,不能可以什么功能都用,那样就会降低效率。

2.开放封闭原则OCP(Open-Close Principle)

 指一个模块在扩展性方面应是可修改的,原模块是封闭的,就是说一个模块
 在不改变其本身代码的前提下增加功能。

3.里氏替换原则(the Liskov Substitution Principle LSP)

  子类应当可以替换父类,并出现在父类能够出现的任何位置,因为子父类有着
  一定的共性

4.依赖倒置原则(the Dependency Inversion Principle DIP)

  具体依赖抽象,上层依赖下层,尽量不使功能高的模块去依赖功能低的模块

5.接口分离原则(the Interface Segregation Principle ISP)

 模块间要通过抽象接口隔开,而不是通过具体的类强行耦合起来。“将大的
 接口打散成多个小接口”,这样做的好处很明显,可以提高耦合度。

文章可能写的不是很好,这是为了自己复习而写的,欢迎各位大牛在评论区指出我的问题

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值