Java基础链接整理

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xiaopingga/article/details/79550773

Java基础整理

Java基础知识整理:https://www.cnblogs.com/chenhao0302/p/7125874.html

一、对象

1、对象的三大特性:封装、多态、继承

2、对象的创建一般分为三步:

声明:声明一个对象,包括对象名称和对象类型

实例化:使用关键字new来创建一个对象

初始化:使用new创建对象时,会调用构造方法初始化对象

3、类是对象的模板,对象是类的实例。

4引用数据类型与基本数据类型最大的不同在于:引用数据类型需要内存的分配和使用。所以,关键字new的主要功能就是分配内存空间,也就是说,只要使用引用数据类型,就要使用关键字new来分配内存空间

5、任何情况下,只要看见new关键字都表示要分配新的堆内存空间,一旦堆内存空间分配了,里面就会有类中定义的属性,并且属性内容都是其对应数据类型的默认值。

6引用传递的精髓:同一块堆内存空间,可以同时被多个栈内存所指向,不同的栈可以修改同一块堆内存的内容。

7以后定义类的时候,最好所有属性都要编写private封装,封装之后的属性如果需要被外部操作,则编写settergetter

扫描二维码关注公众号,回复: 4495670 查看本文章

8匿名对象由于没有对应的栈内存指向,所以只能使用一次,一次之后就将成为垃圾,并且等待被GC回收释放。

类和对象详解(一):http://blog.csdn.net/wei_zhi/article/details/52745268

类和对象详解(二):http://blog.csdn.net/wei_zhi/article/details/52750933

实例化与构造函数:https://www.cnblogs.com/bboyxiaoming/archive/2011/11/02/2233164.html

实例化的几种方法:http://www.jb51.net/article/112006.htm

二、抽象(abstract

抽象方法是指没有方法体的方法,使用abstract关键词做修饰,拥有抽象方法的类就是抽象类,也是使用abstract关键词做修饰,另外,抽象类除了包含抽象方法外,还可以包含具体的变量和具体的方法。类即使不包含抽象方法,也可以被声明为抽象类,防止被实例化

使用原则:

1. 抽象方法必须为public或者protected(因为如果是private,则子类无法继承,该方法无法被实现),缺省情况下默认为public

2. 抽象方法不能直接实例化(即不能对直接通过new进行实例化),需要依靠子类采用向上转型的方式处理;

3. 抽象类必须有子类,采用extends继承,一个子类只能继承一个抽象类;

4. 子类(如果不是抽象类)需要覆盖抽象类中全部的抽象方法,倘若子类没有全部实现,则需要将子类也定义为抽象类;

5. 抽象类的构造方法,子类实现时,会先执行父类构造方法,而后执行子类构造方法。换句话说,抽象类具有构造函数,这些构造函数总是当具体子类被实例化时才调用

6. 抽象类不能声明final(抽象类必须有子类继承,而final定义的类不能有子类);

7. 外部抽象类不允许使用static声明,内部抽象类可以使用static声明(继承时使用“外部类名.内部类名”形式表示类名);

8. 抽象类中可以调用static方法;

9. 抽象类也可以继承实体类,也可以实现接口,没有什么特别的限制

10. abstract 不能与privatestaticfinalnative并列修饰同一个方法。

抽象类详解:http://blog.csdn.net/wei_zhi/article/details/52736350

抽象类的概念和使用:http://blog.csdn.net/eff666/article/details/52324985

抽象类:http://www.cnblogs.com/chenssy/p/3376708.html

三、接口

接口:接口通常以interface来声明,接口是一个特殊的类,这个类里面只有全局变量和抽象方法,没有构造方法。

接口的使用:

1、由于接口里面有抽象方法,所以接口对象不能直接是用关键字new实例化,接口对象可以利用子类对象的向上转型进行实例化;

2、接口必须要有子类,但一个子类可以使用implements实现多个接口;

3、接口的子类(如果不是抽象类),必须覆写接口中的全部抽象方法;

4、对于子类而言,既可以继承抽象类,又可以实现接口;

5、 接口里面只有全局变量和抽象方法,所以可以省略public static finalpublic abstract,接口中的访问权限只有一种:public因为接口中默认是public修饰,若子类中没用public修饰,则访问权限变严格了,给子类分配的是更低的访问权限,所以建议接口方法前加public;

6、一个抽象类(或实体类)只能继承一个抽象父类(或实体父类),但一个接口可以继承多个接口;

Java8(JDK8)中在接口中引入了default默认方法,它是一个接口的是实现方法,可以用来继承,默认方法允许接口方法定义默认实现,而所有子类都将拥有该方法及实现。

1、当继承的父类和实现的接口中有相同签名的方法时,优先使用父类的方法。

 2、当接口的父接口中也有同样的默认方法时,就近原则调用子接口的方法。

 3、子类中的方法优先级最高

 4、当实现的多个接口中有相同签名方法时,必须在实现类中通过重写方法解决冲突问题,否则无法通过编译,在重写的方法中可以通过 接口名.super.方法名(); 的方式显示调用需要的方法.

 5default方法不能重写abstract方法,它只能重写父类的default方法同时default方法不能具有和abstract方法相同的名称。

抽象与接口设计上的区别:

1、抽象类是对类抽象,而接口是对行为的抽象

2、抽象类所体现的是一种继承关系,要想使得继承关系合理,父类和派生类之间必须存在"is-a" 关系,即父类和派生类在概念本质上应该是相同的。对于接口则不然,并不要求接口的实现者和接口定义在概念本质上是一致的,仅仅是实现了接口定义的契约而已,接口所代表的是"like-a" 关系。

3、抽象类是自底向上抽象而来的,接口是自顶向下设计出来的。 

接口讲解一:http://blog.csdn.net/wei_zhi/article/details/52738471

接口讲解二:http://blog.csdn.net/wei_zhi/article/details/52743109

接口:http://blog.csdn.net/qq_26971305/article/details/54293526

接口中的默认方法(default)http://blog.csdn.net/travellersy/article/details/74537170

https://www.cnblogs.com/luozhiyun/p/7999705.html

抽象与接口:http://www.cnblogs.com/chenssy/p/3376708.html

Abstractinterface区别:https://blog.csdn.net/wei_zhi/article/details/52449970

四、继承

继承是面向对象最显著的一个特征。继承是从已有的类中派生出新的类,新的类能吸收已有类的属性和行为,并能拓展新的能力。子类又称为派生类,父类有称为超类或基类。使用继承可以有效实现代码复用,避免重复代码的出现。

1、子类即使不扩充父类,也能维持父类的操作。

2、子类实际上是将父类定义的更加具体的一种手段,父类表示的范围大,子类表示的范围小。

3、Java之中只允许多层继承,不允许多重继承,java存在单继承局限(只针对类,接口可以继承多个接口)。

4、子类继承时,只能继承父类所有非私有的方法和属性,对于构造器而言,只能被调用,不能被继承。

5、在继承关系之中,如果要实例化子类对象,会默认先调用父类构造,为父类之中的属性初始化,之后再调用子类构造,为子类之中的属性初始化。即:默认情况下,子类会找到父类之中的无参构造方法,若父类没有无参构造,则子类必须通过super()调用指定参数的构造方法。

6、super调用父类构造时,一定放在构造方法的首行上。this也是在构造函数的第一行,不能与super同时出现。

7、super代表当前子类父类的引用。this代表对象的引用(谁调用就代表谁)

8、this.方法():先从本类查找是否存在指定的方法,如果没有找到,则调用父类操作; super.方法():直接由子类调用父类之中的指定方法,不再找子类。

9、子类转换成父类,在继承关系上面是向上移动的,所以一般称之为向上转型。

10、对于protected而言,它指明就类用户而言,它是private,但是对于任何继承与此类的子类而言或者其他任何未予同一个包的类而言,它却是可以访问的,父类可以通过protected方法来控制类的继承者的访问权限。

11、继承是一种强耦合关系,父类变,子类必须变,所以谨慎使用继承。

12、当一个类中的方法被覆写后,如果实例化的是这个子类对象,则调用的方法就是被覆写过的方法,但被子类所覆写的方法不能拥有比父类更严格的访问控制权限。

继承详解:http://blog.csdn.net/wei_zhi/article/details/52780026

继承概念参考:http://www.cnblogs.com/chenssy/p/3354884.html

覆写详解:https://blog.csdn.net/wei_zhi/article/details/52780371

五、多重继承

多重继承指的是一个类可以同时从多于一个的父类那里继承行为和特征,然而我们知道java为了保证数据安全,它只允许单继承,所以我们可以通过接口和内部类实现多重继承。

实现多重继承:http://www.cnblogs.com/chenssy/p/3389027.html

Java多重继承:https://www.cnblogs.com/haodawang/p/5967249.html

六、多态

多态基础:http://www.cnblogs.com/chenssy/p/3372798.html

七、内部类

内部类的最大优点:可以方便的访问外部类的私有操作,或者是由外部类方便的访问内部类的私有操作。

内部类主要分为:成员内部类、局部内部类、匿名内部类、静态内部类。

内部类详解:http://www.cnblogs.com/chenssy/p/3388487.html

匿名内部类详解:http://www.cnblogs.com/chenssy/p/3390871.html

(作者地址:http://cmsblogs.com/

内部类详解:http://blog.csdn.net/suifeng3051/article/details/51791812

内部类总结:https://www.cnblogs.com/hasse/p/5020519.html

四种内部类:http://blog.csdn.net/qq_33599978/article/details/70880803

猜你喜欢

转载自blog.csdn.net/xiaopingga/article/details/79550773