java中的面向对象
分类:
文章
•
2023-11-29 21:24:29
面向对象
面向对象的设计思想
对象的创建和使用
- 必须用new创建对象
- 用对象(引用).成员变量引用对象的成员变量
- 用对象(引用).方法调用对象的方法
- 同类的每个对象共享该类的方法
- 同类的每个对象有不同的成员变量存储空间
有关方法
- 方法不能独立定义,只能在类里定义
- 方法要么属于类本身,要么属于该类的一个对象
- 方法不能独立执行
- 构造的方法(和类同名)前无返回值,void也不行
- 构造过的方法不能再次定义
方法的重载与重写
- 方法的重载(Overload)
一个类中定义的不同方法可以名字相同,参数不同。调用时会根据不同的参数表选择不同的方法。
- 方法的重写(Overwrite)
- 子类继承父类中的方法时,对父类的方法进行重新定义。
- 若子类中的方法与父类中的方法具有相同的方法名、返回类型、参数表,则新方法将覆盖原有的方法。(如需父类中原有方法,可用super关键字,引用当前类的父类)
- 重写的方法不能使用比被重写方法更严格的权限
几个关键字
static
- 若方法定义在某个类里,且使用static修饰,则这个方法属于这个类,否则属于这个类的实例
- 同一个类的一个方法调用另外一个方法,如果被调方法是普通方法,则默认用this作为调用者;如果是静态方法,则默认用类作为调用者
this 关键字
- 在类的方法定义中使用,表示该方法的对象的引用
- 必须指出当前使用方法的对象是谁时要使用this
- 可用this处理方法的成员变量和参数重名
- 可看作一个值为当前对象的引用的变量
- static修饰的方法中不能用this引用(不能访问不使用static修饰的普通成员)即静态成员不能直接访问非静态成员,因为静态方法不再需要通过对象访问
super关键字
final关键字
- final的变量的值不能被改变
- 成员变量
- 局部变量 (形参 ) 相当于C中的const
- final的方法不能被重写
- final的类不能被继承
package 和import
- 执行一个类需要写全包名
- class文件的最上层包的父目录位于classpath下
- import xxx.* 引入所有类
-
打包jar
原文件路径加 -cvf xx.jar .
类的继承与权限控制
- 用extends实现 modifier class name extends superclass(基类)
- 子类自动拥有基类的所有成员
- 只能单继承
继承中的构造方法
- 子类的构造过程必须调用其基类的构造方法
- 子类可以在自己的构造方法中使用super(argument_list)调用基类的构造方法
- 使用this(argument_list)调用本类的另外构造方法
- 如果调用super,必须写在子类构造方法的第一行
- 如果子类的构造方法没有显示的调用基类构造方法,则系统默认调用无参数的构造方法,若基类中没有无参数的构造方法,编译出错
访问控制
多态 (动态绑定)
- 存在条件
- 要有继承
- 要有重写
- 父类引用指向子类对象
- 实质
当调用父类里面被重写的方法时,实际new的是哪个子类对象,就调用哪个子类对象的
对象转型
- 一个基类的引用类型变量可以指向其子类的对象
- 一个基类的引用不能访问其子类对象新增加的成员(属性和方法)
- 可以使用引用变量instanseof类名来判断该引用变量是否指向该类或该类的子类
- 子类的对象当做基类的对象来使用,称为向上转型,反之为向下转型
抽象类 abstract
- 抽象方法只需定义,不需实现。因为它被引用时会被重写
- 含抽象方法的类必须被声明为抽象类,加abstract修饰
- 抽象类必须被继承
- 抽象类不能实例化
Object类中的equals方法
- x.equals.(y) x,y是同个对象时才返回ture
- 根据需要重写
接口(特殊的抽象类)
- 多个无关的类可以实现同一个接口
- 一个类可以实现多个无关的接口
- 类似继承,接口与实现类之间存在多态性
-写法 ….interface … xxx class xxx implements xxx
有关内存