java入门基础笔记——面向对象(三)

java入门基础笔记——面向对象(三)

先说一下专业名词
OO(面向对象)
OOA(面向对象分析)
OOD(面向对象设计)
OOP(面向对象程序设计)

概念理解:
什么是类,什么是对象?
是具有相同类型属性的和方法的对象的集合,例如人就是一个类,他们有相同类型的属性,例如人的身高,人的性别,人的年龄等等,人也有相同的行为(方法),例如人的行走,说话,吃饭。

对象就是类的实例,例如张三,是人的其中一个,是具体的一个人。

对象的生命周期:

  1. 声明对象
  2. 在内存堆里动态创建对象
  3. 在栈中创建储存空间

声明对象

例子:

public class human{
private String name;//名字
private String sex;//性别
private int age;//年龄
public human(String name,String sex,int age){
this.name = name;
this.sex = sex; //构造方法
this.age = age;
}
public void walk(){};//声明走路的方法
public void eat(){};//声明吃的方法
puublic void talk(){};//声明说话的方法
public String getName(){return name;}
public void setName(String name){this.name=name;}
public String getSex(){return sex;}
public void setSex(){this.sex=sex;}
public int getAge(){return age;}
public void setAge(this.age=age;)
}

public static void main(String[] args) {
human zhangsan = new human(“张三”,“男”,20);//实例化
}

什么是面向对象程序设计?
面向对象程序设计是将现实生活中复杂的问题抽象成简单对象,并且通过对象进行消息的传递来解决问题的。

面向对象有4个重要的特点:封装,抽象,继承,多态

1.封装
封装是将一些数据和方法包围起来,实现对数据的隐藏,封装可以用访问修饰符来控制类对数据成语的访问权限,封装可以将不想被其他成员访问的数据封起来,使程序容易维护。

2.抽象(abstract)
简单来说是将具体的事物抽象化。例如我们可以将人抽象,我们可以想一下人类有什么共同的特征?走路,吃饭,说话,都可以变成抽象方法,抽象方法不能有具体的方法体。需要注意的是抽象类不能被实例化,只能通过继承来实现,抽象方法必须在子类实现,除非子类也是抽象类。

例子:
public abstract class human{
abstract public void run();//只定义方法,没有具体的方法体。
}

3.继承(extends)
一个类(派生类)可以继承另一个类(父类),子类不仅可以拥有父类的属性和方法,还可以创建自己的属性和方法,不过不可以继承父类private的属性和方法和构造方法。在java中可以通过继承实现代码重用。一个子类只能继承一个父类,一个父类可以有多个子类。通俗点来说,通常来说一个爸爸可以有多个儿子,一个儿子只能有一个爸爸,儿子能有爸爸的财产,而且自己还可以创造财富。

object类是最高父类,也是根类。

成员方法的覆盖(override)
在继承中子类可以隐藏父类的方法,就是我父类有的方法,我子类可以不使用。成员方法的覆盖是指子类覆盖继承父类的方法。在java中覆盖的实现是通过方法重写来实现的。而且在子类重写的方法需要有相同的方法名,相同的返回值类型,相同的参数列表。以此来达到代码重用的目的。

ps:子类不能覆盖父类final和static的方法。

4.多态
简单来说呢,多态是指不同类的对象对同一个消息作出不同的响应。
多态性有两种,静态多态性和动态多态性。这里就涉及一个概念,叫动态绑定与静态绑定。静态绑定是指在编译时使用的方法和属性已经确定了。而动态绑定是在运行的过程中才能知道调用的哪一个。动态绑定主要是用于子类与父类方法同名时,在实际运用中JVM的实际指向不同。注意的是父类的属性无论是静态还是非静态,都是静态绑定,而父类的静态方法,或者是final方法,或者是private的方法都不能动态绑定。具体的可以看一下这篇博客,https://blog.csdn.net/qq_38663729/article/details/78023479
这里有具体讲到动态绑定的底层访问,也是比较容易理解的一篇。

总结一下

面向对象是java语言里的重要思想,可以说是灵魂了,我在一开始学java的时候并没有深入了解什么是面向对象,只是片面的知道如何跟着老师的方法来写代码,其中其实也有一些是面向对象的思想,现在复习的时候也能更深一层去理解什么是面向对象,BTW,面向对象在面试中考到的几率也很高,各位朋友也要去复习一下呀。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值