Java学习第四天
面向对象
面向对象思想:物以类聚,分类的思维模式。
对于描述复杂的事物,为了从宏观上把握、从整体上合理分析,使用面向对象思维来分析整个系统。
三大特性:
- 封装
- 继承
- 多态
1.方法的调用
- 静态方法:static。通过类名直接调用。内部调用需要使用this
- 非静态方法:对象实例化后才能调用
2.使用new关键字创建对象
- 除了分配内存之外,还会给实例对象进行默认初始化以及对类中构造器的调用。
3.对象的引用
引用类型:基本类型(8)
对象是通过引用来操作的:栈-->堆(地址)
变量中保存的只是实际对象对应的地址信息,而不是实际对象数据。
对于基本类型变量,原来的数据将被覆盖掉,被替换为新的值。对于引用类型变量str,赋值运算符只会改变变量中所保存的对象的地址信息,原来对象的地址被覆盖掉,重新写入新对象的地址数据。但原来的对象本身并不会被改变,只是不再被任何引用所指向的对象,即“垃圾对象”,后续会被垃圾回收器回收。
4.高内聚、低耦合
高内聚:类的内部数据操作细节自己完成,不允许外部干涉。
低耦合:仅暴露少量的方法给外部使用。
封装(数据的隐藏):应禁止直接访问一个对象中数据的实际表示,而应通过操作接口来访问。
具体做法:属性私有。
5.继承
关键字:extend
Java中类只有单继承,没有多继承
在Java中所有的类都默认继承object类
属性种类:
-
public
-
protect
-
default:
-
private:无法被继承
无法继承final 类
supper:父类对象。supper()父类构造器必须写在第一行。supper()和子类构造器不能同时调用。
this:当前对象
构造器顺序:先调用父类构造器再调用子类构造器。
6.重写
需要有继承关系,子类重写父类的方法
- 方法名和参数列表必须相同
- 非静态方法,它不属于实例
- 不能final、private修饰
- 修饰符:范围可以扩大:public>protect>default>private
- 抛出的异常:范围可以被缩小,但不能扩大
7.多态
一个对象的实际类型是确定的。但是可以指向的引用类型就不确定了
- 多态是方法的多态,属性没有多态
- 父类和子类有联系 类型转换异常
- 存在条件:继承关系,方法需要重写,父类引用指向子类对象
instanceof :
两者引用类型不存在父子关系--报错
两者引用类型存在父子关系--值不存在父子关系--false
两者引用类型存在父子关系--值存在父子关系--true
8.类型转换
类型之间转化:
64位 32位
父 子
(高 低)
低转高:直接转换
高转低:强制转换 ----(类型)
9.static 静态
- 静态当类加载时加载
- 所有实例共享同一个静态变量的方法
- 非静态方法可以调用静态方法,静态方法可以调用静态方法但不能调用非静态方法
- static{ //静态代码块} {//匿名代码块}。加载顺序:静态代码块(只执行一次)->匿名加载块
- 静态导入函数 static import
10.抽象类
关键字:abstract
抽象类用法:约束
-
抽象类的所有方法都由继承的子类来实现,除非子类也是抽象类
-
无法new抽象类
-
抽象类中可以写普通方法,抽象方法必须再抽象类中
11.接口
关键字:interface
接口本质是契约,只有规范,无法写方法
接口中属性都是静态常量
继承:implements
public class UserImpl implements User1,User2
12.内部类(友元)
在A类中定义B类
A a=new A();
A.B b=a.new B();
- 内部类可以获取外部类的私有属性
杂项
ctrl+h 继承树结构
alt+insert:override重写

浙公网安备 33010602011771号