Java面向对象
本质
以类的方式组织代码,以对象的方式组织(封装)数据
三大特性
程序设计追求**高内聚,低耦合"。
高内聚:类的内部数据操作细节自己完成,不允许外部干涉
低耦合:仅暴露少量的方法给外部使用
-
封装
即信息隐藏:通常,应禁止直接访问一个对象中数据的实际表示,而应通过操作接口来访问
比如:类的属性私有化,仅提供get、set方法供外界访问
好处:1. 提高系统安全性,比如set一个属性值得时候,可以加安全判断;2. 隐藏代码的实现细节;3. 统一接口,比如统一提供get、set方法操作私有属性;4. 增加系统可维护性
封装思想:在于封装后外界无法直接操作类的属性,但提供了一些接口以便外界按照指定的方式操作封装的数据 -
继承
extends扩展,子类继承父类即对父类的扩展重写:需要有继承关系,子类重写父类的方法
1. 方法名必须相同
2. 参数列表必须相同
3. 修饰符,范围可以扩大但不能缩小: public > protected > default > private
4. 抛出的异常,范围可以缩小但不能扩大: ClassNotFoundException ---> Exception(大)
简而言之,子类的方法和父类必须一致,方法体不同 -
多态
基于继承,父类引用指向子类对象
同一对象不同类型引用,形成多态
作用:以统一的接口(父类引用)来操纵某一类中不同对象(子类)的动态行为,实现对象之间的解耦
![]()
构造器
- 定义有参构造器后,无参构造器必须显示定义
栈和堆
- 对象是通过引用来操作的
- 对象的引用即对象变量存放在栈中
- 对象的引用指向的对象存放在堆中
- 从这个角度可以理解:类用来组织代码,对象用来封装数据。不同对象具有不同的属性值以及方法的实现
super和this
super:
1. super调用父类构造方法,必须在构造方法的第一行
2. super必须只能出现在子类的方法或构造方法中
3. super()和this()不能同时出现在构造方法中,因为这super()或this()必须在构造器的第一句
this:
1. this表示对象本身
static
- static修饰的变量或方法和类同时加载到内存中,所以可以通过类直接调用,也可以在所在类中直接调用
- 非静态方法可以调用静态方法,反之则不行。因为,静态方法在调用非静态方法时,非静态方法还没有加载进内存
- 静态代码块
![]()
抽象类和接口
- 抽象类只能单继承,而接口可以多继承,所以接口比抽象类用的多
- 面向接口编程:专业的约束,约束和实现分离
- 本质:契约
- 接口中默认修饰词,变量:public static final;方法:public abstract
- implements实现多个接口,且必须重写其中的方法
![]()
instanceof
了解
成员内部类
package com.crazygod.oop;
public class Outer {
private int id = 10;
public void out() {
System.out.println("外部类的方法");
}
public class Inner {
public void in() {
System.out.println("内部类的方法");
}
// 获得外部类的私有属性
public void getID() {
System.out.println(id);
}
}
}
package com.crazygod.oop;
public class Application {
public static void main(String[] args) {
Outer outer = new Outer();
// 通过外部类来实例化内部类
Outer.Inner inner = outer.new Inner();
inner.getID();
}
}
静态内部类

局部内部类
package com.crazygod.oop;
public class Outer {
// 局部内部类(在方法中)
public void method() {
class inner {
}
}
}
匿名内部类
package com.crazygod.oop;
public class Test {
public static void main(String[] args) {
// 没有名字初始化类,不用将实例保存到变量中
new Apple().eat();
UserService userService = new UserService() {
@Override
public void hello() {
}
};
}
}
class Apple {
public void eat() {
System.out.println("1");
}
}
interface UserService {
void hello();
}




浙公网安备 33010602011771号