JAVA SE(基础 第4篇) 面向对象编程(高级)

本文详细介绍了Java中的类变量、静态方法的使用及其访问规则,强调了类变量在不同对象间的共享特性。此外,讨论了main方法的访问限制,代码块的作用,以及单例模式的设计与实现。单例模式确保了一个类只有一个实例,通过私有构造器和静态工厂方法实现。最后,对比了继承和实现接口的差异,展示了接口的多态特性,并探讨了内部类的四种类型及其应用场景。
摘要由CSDN通过智能技术生成

一、

1.  类变量:

  • static变量是同一个类所有对象共享。

  • 类变量在类加载的时候就生成了,所以即使没有创建对象实例也可以访问。

  • 也可以通过创建对象实例来访问。

  • 类变量的访问依然要遵守相关的访问权限。

2.  类变量使用细节:

(1)什么时候需要类变量:

          当我们需要让某个类的所有对象都共享一个变量时,就可以用静态变量(类变量)

(2)类变量与实例变量的区别:

          类变量是该类的所有对象共享,而实例变量是每个对象独享的

(3)加上static称之为类变量或静态变量,否则称为实例变量/普通变量/非静态变量

(4)类变量可以使用 ( 类名 .  类变量名)方式访问

(5)实例变量不能通过(类名. 变量名)访问

3. 类方法(静态方法):

  • 访问修饰符  static   数据返回类型   方法名( ){ }

  • 类方法的调用:(类名. 类方法名)  或者  (对象名 . 类方法名)

 

 4.  总结:静态方法,只能访问静态成员变量; 非静态方法,可以访问所有的成员变量

二、

1. main方法:可以直接调用main方法所在类的静态方法或静态属性;但不能直接访问该类中的非静态成员,必须创建该类的一个实例对象后,才能通过这个对象去访问类中的非静态成员

 

2.  代码块:又称为初始化块,属于类中的成员,即是类的一部分,类似于方法,将逻辑语句封装在方法体中,通过{ }包围起来。

 

 

3. 单例模式:

  • 所谓类的单利设计模式,就是采取一定的方法保证在整个软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法

  • 两种方式:饿汉式、懒汉式

4.单例模式具体步骤:

  • 构造器私有化 ,防止直接new

  • 类的内部创建对象

  • 向外暴露一个静态的公共方法,getinStance

 

5.final关键字:

6.抽象类Abstract:当父类的一些方法不能确定时,可以用abstract关键字来修饰该方法,这个方法就是抽象方法,用abstract来修饰该类就是抽象类。

(8) 抽象方法不能使用private、 final、和static 来修饰。    

(9)抽象模板设计模式

7.  接口(Interface):接口就是给出一些没有实现的方法,封装到一起,到某个类要使用的时候,再根据具体情况把这些方法写出来。

 

8.接口细节: 

  • 接口不能被实例化

  • 接口中的所有方法都是public,接口中的抽象方法,可以不要abstract修饰

  • 一个普通类实现接口,就必须将所有的方法实现

  • 抽象类实现接口可以不要实现接口的方法

  • 一个类可以同时实现多个接口

  • 接口中的属性,只能是final, 而且是public ,static ,final,修饰符  

  • 接口中的属性访问形式:接口名. 属性名

  • 接口不能继承其他的类,但是可以继承多个别的接口

  • 接口的修饰符只能是public  ,和默认,和类的修饰符一样 

9. 继承类  VS 实现接口  :

  • 实现接口是对java单继承机制的一种补充。

  • 继承的价值在于:解决代码的复用性和可维护性

  • 接口的价值在于:设计好各种规范的方法,让其他类去实现这些方法,即更加灵活

  • 接口比继承更加灵活,在一定程度上实现代码解耦(即:接口规范性+动态绑定)

10.  接口的多态特性:

  • 多态参数

  • 多态数组

  • 接口存在多态传递现象

 

三、内部类

1.内部类 (难点):

 

 

2.局部内部类:

  • 定义在外部类的局部位置,通常在方法或代码块中

  • 可以直接访问外部类的所有成员,包含私有的

  • 不能添加访问修饰符,但是可以用fianal修饰

  • 作用域:仅在它定义的方法体和代码块内

  • 局部内部类可以直接访问他的外部类的成员

  • 外部类在方法中,可以创建对象,然后调用方法即可

  • 本质任然是一个类

  • 如果外部类和局部类部类的成员重名时,默认遵循就近原则,如果想访问外部类的成员,使用外部类名.  this. 成员  去访问。

3.匿名内部类:本质是类;内部类;没有名字;是一个对象

  • 是定义在外部类的局部位置,比如方法中,并且没有类名。

  • 基于接口的匿名内部类:

  • 匿名内部类使用一次,就不能再使用

  • 基于类的匿名内部类:

  • 基于抽象类的匿名内部类:

4.注意细节:

  • 即是一个类的定义,同时也是一个对象

  • 外部其他类,不能访问匿名内部类

5.成员内部类:定义在外部类的成员位置。

  • 可以直接访问外部类的所有成员,包含私有的

  • 可以添加任意的访问修饰符

  • 作用域:整个类体

  • 成员内部类访问外部类:直接访问

  • 外部类访问成员内部类:创建成员内部类的对象,然后使用相关的方法

  • 外部其他类,使用成员内部类三种方式:

6.静态内部类:

  • 定义在外部类的成员位置,并且有static

  • 可以直接访问外部类的所有静态成员,包含私有的,但不能直接访问非静态成员

  • 作用域:整个类体

  • 外部其他类  访问  静态内部类:因为静态内部类,可以通过类名直接访问(前提满足访问权限)

7.小结:四种:局部、匿名、成员、静态 内部类。

   


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Java面相对象

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值