Java面向对象的理解

Java面向对象

1、对象

对象是一个自包含的实体,用一组可识别的特性和行为来识别。面向对象编程,OOP。

2、类

类就是具有形同的属性和功能的抽象的集合。

3、构造方法

构造方法,就是对类进行实例化,构造方法与类同名无返回值,也不需要void,在new的时候调用。

Cat cat = new Cat() new 后面的Cat就是构造方法。第一个Cat是类

所有类都有构造方法,如果自己不写则系统会自动生成空的构造方法,该方法什么都不做,只起到实例化对象的功能。如果自己写,那么默认的方法就失效了。

4、方法重载

方法重载提供了创建同名方法的能力,但这个能力需要使用不同的参数类型。

  • 方法名相同,参数不同
  • 可以在不影响之前的代码的基础上加功能。
    public Cat();
    public Cat(String name);
    public Cat(String name,int age);

5、封装好处

1、解耦合

2、类内部自由修改

3、具有清晰的对外接口

6、多态

导入:有一个京剧演员世家,子承父业,父子二人在京剧上都有较深的造诣。在一场本属于来父亲的演出中,父亲生病了,由于京剧是有脸谱的,于是儿子代替老父亲演出。因为是儿子代替老父亲演出,因此演出内容应该是父亲本场演出所计划的,观众已经买了票,不能变更,但演出承担着者是儿子,儿子可以在内容上有自己的特色。

多态表示不同的对象可以执行相同的动作,但是通过他们自己的实现代码来执行。

多态注意事项:

  • 第一,子类是以父类的身份出现
  • 第二,子类在工作时以自己的方式来实现
  • 第三,子类以父类的身份出现时,子类特有的属性和方法不可用。

7、抽象类

导入:Animal animal = new Animal()这样是没有意义的,因为我们可以想象出一只猫,一只狗长什么样,但是,一个动物长啥样。因此动物是不能被实例化的,可以定义为抽象的。

抽象类注意事项:

  • 第一,抽象类不能实例化,实例化没有意义

  • 第二,抽象类中的抽象方法必须被子类重写

  • 第三,如果一个类中含有抽象方法,那么这个类必须被定义为抽象类,不论是否还包含其他方法。

抽象类通常代表一个抽象概念,他提供一个继承的出发点,当设计一个新的抽象类时,一定是用来继承的,所以,在一个以继承关系形成的等级结构里面,树叶节点应当是具体类,而树枝节点均应当是抽象类。

8、接口

导入:现在,除了正常的猫,我们发现还存在一种猫——机器猫,这个猫除了一般动物的功能,还有自己的特异功能:口袋变东西。以及一个特殊的猴孙悟空,一只另类的猪猪八戒。他们除了有普通猫、猴、猪的功能,还都会变东西。此时如果想实例上述三个特殊动物的实例对象,显然继承多态等方式已经不能实现。

接口:interface。接口是把隐式公共方法和属性组合起来,以封装特定功能的一个集合。一旦类实现了接口,类就可以支持接口所指定的所有属性和成员。声明接口与抽象类完全相同,但不允许提供方法体。接口不能实例化,实现接口必须实现接口中的所有方法和属性。

9、抽象类与接口对比

这两个概念不好理解,相似又不同。

抽象类可以给出一些成员的实现,接口却不包含成员的实现,抽象类的抽像成员可以被子类部分实现,接口的行为需要实现类的完全实现,一个类只能继承一个抽象类,但可以实现多个接口。

  • 第一,类是对对象的抽象;抽象类是对类的抽象;接口是对行为的抽象
  • 第二,如果行为跨越不同类的对象,可使用接口;对于一些相似的类对象,用继承抽象类。
  • 第三,从设计角度讲,抽象类是子类的公共部分,泛化出父类,然后子类继承,而接口是根本不知子类的存在,方法如何实现还不确定,预先定义。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值