天天看点

面向对象编程[OOP(Object Oriented Programming)]

📖个人介绍

大家好我是:一颗松

认真分享技术,记录学习点滴

如果分享对你有用请支持我哦🍺

点赞:👍 留言:✍收藏:⭐️

个人格言: 想法落实的最佳时机就是现在!🏄

面向对象编程[OOP(Object Oriented Programming)]

文章目录

  • ​​OOP编程​​
  • ​​1🚩 类变量(静态变量)与类方法(静态方法)​​
  • ​​1.1 类变量(静态变量)​​
  • ​​1.2 类方法(静态方法)​​
  • ​​1.3 main方法的语法​​
  • ​​2🚩 代码块​​
  • ​​2.1 代码块基本语法​​
  • ​​2.2 代码块使用的注意事项​​
  • ​​2.3 类中部分成员的执行顺序​​
  • ​​3 🚩抽象类​​
  • ​​3.1 抽象类的使用​​
  • ​​4 🚩接口​​
  • ​​4.1 接口简介​​
  • ​​4.2 实现接口和继承类有什么区别​​
  • ​​4.3 接口的多态​​
  • ​​5 🚩内部类​​
  • ​​5.1 内部类的特点​​
  • ​​5.2 四种内部类简介​​
  • ​​5.3 局部内部类​​
  • ​​5.4 匿名内部类【重要】​​
  • ​​结语​​

OOP编程

类包含五大成员:属性、方法、构造器、代码块、内部类

1🚩 类变量(静态变量)与类方法(静态方法)

类变量或类方法也叫静态变量或静态方法,用修饰符【static】修饰

1.1 类变量(静态变量)

(1)概念:指在类中被static修饰的变量;

内存分布及生命周期:

(1). 一个静态变量是被同一个类的多个对象所共享的;

(2). 静态变量是在类加载的时候生成,类销毁的时候消失

【在jdk8以前是在方法区的静态域存放,在jdk8以后在堆内存中】

(2)静态变量的访问

访问格式:

① 类名.静态变量名

② 对象名.静态变量名

代码示例:

class TestDemo {
    static int count =100;
}
public class MainTest {
    public static void main(String[] args) {
    
//        类名.静态变量名
        System.out.println(TestDemo.count);
//        对象名.静态变量名
        System.out.println(new TestDemo().count);
    }
}
      

(3) 类变量的使用场景

当需要让某个类的对象共享一个变量时候可以使用类变量;

1.2 类方法(静态方法)

(1)概念: 静态方法指在类中被static修饰的方法;类方法可以通过类名直接调用,不用创建对象,简化调用过程,提高开发效率;

(2)使用: 静态方法只能访问静态成员,非静态方法可以访问静态成员与非静态成员

【工具类中方法大多用类方法,比如Math类中方法等】

1.3 main方法的语法

(1)代码示例:

public static void main(String[] args) {
      //方法体  
    }      

(2)main方法的三大疑问?

①为什么被public修饰?

答: main方法是被java虚拟机直接调用的

②main方法为什么用static修饰?

答:因为虚拟机在调用时不需要创建对象;

③main方法中的字符串数组String[] args形参是什么时候被传值的?

答:在执行main方法时添加,会被打包成字符串数组

eg:

java 执行的程序 参数1 参数2 参数3 …

面向对象编程[OOP(Object Oriented Programming)]

2🚩 代码块

2.1 代码块基本语法

(1)概念: 代码块又称初始化块,属于类的一个成员,与方法相似;

(2)代码块分类: 普通代码块和静态代码块

①普通代码块:没被static修饰的代码块,非静态代码块

{
 //内容
    }      

①静态代码块:被static修饰的代码块为静态代码块

static {
 //内容        
    }      

(3) 代码块执行时间

在使用构造器创建对象之前执行;

对代码块的理解【是对构造器的补充机制,可做初始化操作】

2.2 代码块使用的注意事项

(1) 静态代码块作用及注意事项

对类进行初始化,且随着类的加载而执行只执行一次;

【普通代码块每创建一个对象,执行一次】

(2)补充:类什么时候加载?

①创建对象实例时

②创建子类对象实例时

③使用类的静态成员时

2.3 类中部分成员的执行顺序

静态属性(初始化)/代码块 => 普通属性(初始化)/代码块 => 构造器他们的执行顺序

(1) 静态属性初始化与静态代码块的执行,优先执行

在静态属性初始化与静态代码块之间执行按照先后顺序执行

(2)普通属性初始化与普通代码块的执行,在静态属性初始化与静态代码块之后

在普通属性初始化与普通代码块之间执行按照顺序执行

(3) 构造器最后执行

构造器的最前面,隐藏了①super()和②普通代码块

3 🚩抽象类

被abstract修饰的方法叫抽象方法,被abstract修饰的类叫抽象类;

【abstract只能修饰类和方法不能修饰其他内容】

3.1 抽象类的使用

(1) 抽象类不能实例化;

(2)一个类继承了抽象类必须重写其中抽象方法,除非本身也是抽象类

(3)抽象方法不能被 final、static、private修饰【与重写相违背】

java设计模式—模板设计模式:可以体现抽象类的的作用

4 🚩接口

概念: 💡 接口就是把给出的一些未实现的方法,封装到一起;某个类需要实现接口的时候再重写这些方法

4.1 接口简介

格式:

interface 接口名{

属性

方法

}

【注意:在jdk7以前接口中的方法不允许出现方法体;jdk8以后可以有静态方法,默认方法】

4.2 实现接口和继承类有什么区别

继承之间的关系是:“is a…”

实现接口之间的关系是:“like a…”

(1) 接口和继承解决的问题不同

①继承:解决代码复用性和可维护性问题

②接口:接口主要是设计好的规范(方法),让其他类去实现这些方法;

(2) 接口比继承更加灵活,只需要满足“like a…”就可以使用

(3) 接口在一定程度上实现解耦

4.3 接口的多态

(1)接口类型的变量可以指向、实现接口的实现类的对象

(2) 在定义方法时,形式参数为接口类型,实参可以使用接口的实现类;

(3) 接口可以实现多态数组

定义接口类型数组,可存放不同接口实现类的对象

(4) 接口可以多态传递

接口与接口之间有继承关系,如A接口继承B接口,F类实现了B接口;那么A类型的变量可以指向F类的对象;

5 🚩内部类

5.1 内部类的特点

可以直接访问私有属性,并且可以体现类与类之间的包含关系

5.2 四种内部类简介

(1) 定义在外部类的局部位置上(如方法)

①局部内部类(有类名)

②匿名内部类(无类名)

(2) 定义在外部类的成员位置

③成员内部类(无static修饰)

④静态内部类(被static修饰)

5.3 局部内部类

概念: 局部内部类是指被定义在外部类的局部位置(如方法中)且有类名;

(1) 局部内部类定义在方法或者代码块中

(2) 作用域在方法体或者代码块中

(3) 本质也是一个类

(4) 当外部类与局部内部类属性重名时,用属性名访问遵循就近原则;若要访问外部类属性可以用【外部类名.this.属性名】

5.4 匿名内部类【重要】

需要注意的四点知识:

①本质是类

②内部类

③该类没有名字

④同时还是一个对象

定义在外部类的局部位置,

(1)基本构成

new 类或接口(参数列表){

类体

}

结语

大佬请留步
面向对象编程[OOP(Object Oriented Programming)]