面向对象

对于描述复杂的事物,为了从宏观上把握,从整体上合理分析,我们需要使用面向对象的思路来分析整个系统,但是,具体到微观操作,仍然需要面向过程的思路去处理

OOP

Object-Oriented Programming

本质

以类的方式组织代码,以对象的方式组织(封装)数据

三大特性

封装,多态,继承

方法

静态方法

和类一起加载的

非静态方法

类实例化之后,才存在

封装

高内聚,低耦合:类的内部数据操作细节自己完成,不允许外部干涉;仅暴露少量的方法给外部使用

封装(数据的隐藏):通常,应禁止直接访问一个对象中数据的实际表示,而应通过操作接口来访问,称为信息隐藏

好处

  1. 提高程序的安全性,保护数据
  2. 隐藏代码实现细节
  3. 统一接口
  4. 系统可维护性增加了
记住

属性私有:get/set

继承

对某一批类的抽象

类只有单继承,没有多继承

私有(private)无法继承

idea里快捷键
ctrl+h:打开继承树

注意:

  1. super调用父类的构造方法,必须放在构造方法的第一行
  2. super必须只能出现在子类的方法或构造方法中
  3. super和this不能同时调用构造方法

重写

需要有需求关系,子类重写父类的方法

要求

  1. 方法名必须相同
  2. 参数列表必须相同,方法体不同
  3. 修饰符:范围可以扩大,但不能缩小
  4. 可能抛出异常:可以被缩小,但不能扩大

都是方法的重写,和属性无关

重写只跟非静态方法有关

子类重写了父类的方法,执行子类的方法

多态

父类的引用指向子类

对象能执行哪些方法,主要看左边的类型

//Person->Student		
		Student s1 = new Student();
 //s1可以执行Student类里的所有方法,包括继承过来的方法

        Person s2 = new Student();
//s2只能执行Person里的所有方法,不能调用Student里独有的方法,但是当方法被Student重写后,执行Student里的方法

        Person s3 = new Person();
//s3执行Person里的所有方法,就算方法被重写了,也能执行Person里的方法

注意:

  1. 多态也是方法的多态,属性没有多态
  2. 父类和子类,有联系的才有多态
  3. 存在条件:继承关系,方法需要重写,父类引用指向子类对象

一个对象的实际类型是确定的,但是指向对象的引用的类型可以很多

Instanceof

X instanceof Y	
// X,Y存在父子关系则编译通过

子类转父类,可能丢失自己本来的一些方法

Static

static{
    //静态代码块,只执行一次
}

{
    //匿名代码块
}

静态导入包

import static java.lang.Math.random;
public class Demo3_Static {
    public static void main(String[] args) {
        System.out.println(Math.random());	
        System.out.println(random());
    }
}

抽象类

抽象方法:只有方法名,没有方法体

一个类,如果想继承抽象类,就要实现抽象类里的所有抽象方法,除非这个类也是抽象类

  1. 抽象类不能New,只能通过子类实现方法
  2. 抽象类中可以写普通方法
  3. 抽象方法必须在抽象类中

减少代码,提高开发效率

接口

只有规范!不能写具体方法

可以多继承

接口中的所有方法都是public abstract

所有属性都是public static final

内部类

在一个类的内部再定义一个类

可以获得外部类的私有属性

posted @ 2024-07-17 15:42  SyzTak  阅读(7)  评论(0)    收藏  举报