【Java】面向对象进阶

一、static(共享的、属于类的,和对象无关的)

 1、static特点

2、static内存图(静态变量内存图)

  • 对象:只有出现了new关键字,才会在堆内存开辟空间,该空间内存储的是非静态变量;
  • 静态区里的变量是对象共享的,在内存中只有一份,谁用谁去拿;非静态的的变量是每一个对象独有的,每一个对象单独存放的。

3、工具类(静态方法的使用场景)

(1)定义

  • 构造方法私有了在外界就不可以创造这个类的对象了

(2)exampl 定义数组工具类:

  • ArrayUtil工具类printArr方法
  • ArrayUtil工具类getAverage方法
  • 测试类调用

(3)exampl 定义学生工具类:

  1. 定义学生类
  2. 定义学生工具类
  3. 测试类调用

  直接用类调用

4、static注意事项

  1. 静态方法中没有this关键字

  2. 静态方法中,只能访问静态

  3. 非静态方法可以访问所有

(1)举例角度:

  1. 非静态的东西往往是和对象相关的,比如某个对象的name、某个对象的age,所以里面的this和对象相关
    静态一般都是共享的,和某一个对象没有太大关系,所以在静态中没有this关键字
  2. 在静态方法中,没有this,不知道对象,只能访问静态
  3. 静态方法也可以通过对象调用,所以非静态方法可以访问所有

(2)内存角度:

在静态加载到内存中后,如果没有创建对象,这个时候内存中是没有非静态的数据的,静态的东西是可以相互调用的。静态无法调用非静态。

  1. 静态方法不能访问非静态成员变量
    非静态成员变量又称实例变量
    在Student调用method()方法后,没办法输出 name ,因为这个name是非静态的,此时堆内存中还没有对象。
  2. 静态方法不能调用非静态成员方法
  3. 非静态方法可以访问所有

5、main方法

二、继承

1、封装

2、继承

重复太多,提取共同,创建新类

3、什么是继承,继承好处,什么时候用继承

coder不是goods,不可以这么继承,需要分开写

4、继承的特点

5、子类可以从父类继承哪些内容

  • 父类的构造方法不能被子类继承
  • 不管是私有的还是非私有的成员变量都是可以被继承,但父类的私有成员变量子类不可以直接使用,需要用get/set方法
  • 只有父类中的虚方法才能被子类继承

6、继承中成员变量,成员方法,构造方法的特点

(1)成员变量的访问特点

就近原则:谁离我近,我就用谁

(2)成员方法的访问特点

(3)构造方法的访问特点

7、方法重写

(1)方法的重写

(2)重写的本质

(3)方法重写注意事项和要求

(4)总结

8、this,super使用总结

访问构造方法里this():表示调用本类其他构造方法

三、多态

1、多态

2、多态的应用场景

不使用多态:

使用多态:

3、多态调用成员的特点

变量调用:编译看左边,运行也看左边

方法调用:编译看左边,运行看右边

4、多态的优势和弊端

example:a01polymorphismdemo1

(1)优势:方法中,使用父类型作为参数,可以接收所有子类对象

解耦合:此时p.work调用的是学生的work方法,但如果我想使用老师的work方法,只需要改掉红色就可以了,不需要改动后面的代码。(想要使用不同对象实现相同动作)

(2)弊端:不能使用子类特有功能

  • lookHome()和catchMouse()是狗和猫特有的方法,Animal的对象a没办法调用lookHome()。
  • 解决办法:把a强制类型转换为Dog,不可以瞎转,如果转成Cat类会报错。
  • a instanceof Dog:判断a是不是Dog类,返回boolean类型。
  • a instanceof d:判断a是不是Dog类,如果是,赋给d,如果不是,返回false。

(3)总结

四、包、final关键字、权限修饰符、代码块

1、什么是包

全类名:包名+类名

2、使用其他类的规则(导包规则)

3、final关键字

最终的->不可被改变的

4、常量

核心:常量记录的数据是不能发生改变的

5、权限修饰符

6、代码块

(1)局部代码块

(2)构造代码块

(3)静态代码块

(4)总结

五、抽象类

1、抽象方法,抽象类

构造方法作用:当创建子类对象时,给属性进行赋值

2、抽象类,抽象方法的意义

这样会让代码不统一,无法限定子类中方法书写的格式,在调用的时候需要去看每一种子类的调用方法

定义抽象后,就可以只看抽象类

3、总结

六、接口

1、相关定义

接口和接口:如果实现类实现的是最下面的子接口,需要重写这个体系里所有的抽象方法。(所有接口的)

2、练习

3、相关知识

(1)定义有方法体的方法

(2)定义私有方法

格式1是普通私有方法,给(1)中默认方法服务的

格式2是静态私有方法,给(1)中静态方法服务的

(3)总结

4、接口的应用

5、适配器设计模式

七、内部类

1、内部类

2、内部类的分类

(1)成员内部类

1)成员内部类

2)创建成员内部类的对象

3)成员内部类如何获取外部类的成员变量

4)总结

(2)静态内部类

  

总结:

(3)局部内部类

(4)匿名内部类

匿名内部类的对象

1、继承\实现关系:实现swim接口

2、方法的重写:public void swim(){}对父类/接口内方法的重写

3、创建对象:下面最外层大括号是 没有名的类(匿名类)

下面相当于创建了一个animal类的子类dog的对象

 swim接口的实现类对象:swim s

该对象可以调用本类中的所有方法

总结:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值