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)

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值