Java面向对象基础

Hello 大家好,我又来啊,今天我们吧说Java的面向对象。

图片 1

还记之前错过面试几家店铺的实习生职位,大部分面试官都问了自己有关面向对象
的题材,不理解以后还会见无会问,估计是免会见了咔嚓。。。(:3[▓▓]

oop.gif

下面我们吧正事!(≖ ‿ ≖)✧

面向对象三因素:封装、继承、多态

 

  • 封装:封装的含义,在于明确标识出允许外部使用的富有成员函数和数量项,或者被接口。
  • 继承
    • 连续基类的措施,并做出自己之扩充;
    • 声明某个子类兼容于某某基类(或者说,接口及全配合于基类),外部调用者可随便需关注其距离(内部机制会自动将要派发dispatch顶当的逻辑)。
  • 多态:基于对象所属类的异,外部对同一个办法的调用,实际施行的逻辑不同。可怜醒目,多态实际上是以附于继承的第二栽意义的

面向对象特点发生四独——封装、继承、多态、抽象

多态

计签名:方法名 + 参数列表(参数类型、个数、顺序)

 

重写

子类重写父类方法,除非实例方法可以给再写,重写后底办法要随为实例方法。分子变量和静态方法还无可知吃重新写,只能吃隐形

重写实例方法:超类Parent中生实例方法A,子类child定义了同A
无异于签名和子集返回路
的实例方法B,子类对象ChildObj只能够调用自己之实例方法B。

方法的重写(override)两以及片多少一好口径:

  1. 主意名相同,参数类型相同

  2. 子类返回路小于等于父类方法返回路

  3. 子类抛来十分小于等于父类方法抛来很

  4. 子类访问权限大于等于父类方法访问权限

注意:

  • 非克重写static静态方法。(形式达到足描绘,但精神上不是重写,属于下面要谈的藏匿)

  • 重写方法可以转其它的艺术修饰符,如final,synchronized,native。不管受再写方法吃发生无final修饰的参数,重写方法还好长、保留、去丢这参数的
    final 修饰符(参数修饰符不属方法签名)。

封装:

重载

于同一个好像中,有多独办法名相同,参数列表不同(参数个数不同,参数类型不同),与措施的回来值无关,与权力修饰符无关。编译器通过对法签名的辨别即可静态编译出不同之方式。这吗是java中重载与重写的区别之一

重载只是一样种植语言特色,与多态无关,与面向对象也无关。多态是为实现接口重用

Java中方法是足以同类名同名的,和构造方法唯一的分别就是是,构造方法没有返回值

卷入的定义:方法的调用者并无知底方法的切实可行业务逻辑,只有方法的实现者才理解方法的现实贯彻。

隐藏

潜伏和覆盖在花样达到极其类似(语法规则),但装有本质的区分:只有成员变量(不管是不是静态)和静态方法可叫躲。

打包的知:Java将相关变量和办法封装到类似中,通过可见性实现封装。

成员变量

超类 Parent 中有成员变量 A ,子类 Child 定义了与 A 同名的分子变量 B
,子类对象 ChildObj 调用的是自己的成员变量 B。如果将子类对象 ChildObj
转换为超类对象 ParentObj ,ParentObj 调用的凡超类的成员变量 A !

  1. 隐蔽成员变量时,只要同名即可,可以重新改变量类型(无论基本类型或者隐藏类型)

  2. 免可知隐藏超类中的 private
    成员变量,换句话说,只能隐藏可以拜的分子变量。

  3. 隐藏超类成员变量 A
    时,可以下降或加强子类成员变量B的拜访权限,只要A不是 private。

  4. 潜伏成员变量和是否静态无关!静态变量可以藏实例变量,实例变量也可隐藏静态变量。

  5. 足隐蔽超类中之final成员变量。

可见性有四单重要字:

静态方法

超类 Parent 有静态方法 A ,子类 Child 定义了跟 A
一如既往签名以及子集返回路 的静态方法 B ,子类对象 ChildObj
调用的是协调之静态方法 B 。如果把子类对象 ChildObj 转换为超类对象
ParentObj ,ParentObj 调用的是超类的静态方法 A !

躲藏后底法子要依为静态方法

1.**private**:当前接近可见

2.protected:当前类&本包可见

3.default:(默认)当前类&本包&外包子类可见

4.private:都可见

class的可见性要么是public,要么是本包可见

貌似景象下还是方公有化(public)属性私有化(private)

 

继承:

累的概念:子类可以延续父类所有属性和措施,但是由可见性的原委,子类只能使用具有父类的非私有化属性和方式(构造器除外)。

※要专注继承是单独为的,不得以并行继承

 

多态:

多态就是还写及重载了,区别就是重载和参数有关,重写及目标有关

重载方法可生出在个别独八九不离十吃,也得以起在一个类似中,方法名相同,参数类型不同,与归值无关。

双重写得有在少个近乎吃,方法名相同,参数类型一致,方法返回路一致,返回路一致。

 

 1   //方法test体现重载  方法testTest体现重写
 2  public class A {            
 3      public void test(int a){
 4           return "a";  
 5      }   
 6 
 7      public void test(long a){
 8           return "aa";  
 9      }     
10  
11      public void testTest(int b){
12         return "b";  
13     }
14  }
15  
16  public class B extends A{
17      public void testTest(int b){
18         return "bbbbbb";  
19     }
20  }

 

 

抽象:

泛泛的概念包括接口和抽象类。

public interface A{}

接口特点:不可知实例化对象

      只有常量

**      但来抽象方法,没有常见方法**

        一定让实现

        接口是异样之抽象类

 悄悄告诉您(`・ω・´)
:一个好像可实现多独接口  ||  抽象类可兑现接口  ||  接口可以连续接口
 ||  不克兑现接口)

 

public abstract class A{}

 

泛泛类特性:不能够实例化对象

      有构造器(有成员变量,需要初始化化)

      可以来常量&变量

      可以出常见方法&抽象方法

      一定叫连续,实现即得还写抽象方法

抽象类的长:可以给反复♂利用。

空洞方法自然在空虚类吃,抽象类中无肯定有抽象方法。

 

 

 好了! 以上就是是目前自己在Java面向对象方面的细见解了!希望能帮助到大家!
 我们下期再见!

 图片 2

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图