Java OOP

来源:互联网 发布:水杉建模软件 编辑:程序博客网 时间:2024/06/05 20:56

Java OOP

构造方法

对象被创建时用来初始化对象所调用的方法

  1. 构造方法名必须和类名一致
  2. 如果没有自定义构造方法, 会默认定义空构造方法.

继承

extends 继承类
implements 实现接口

特性

  1. 拥有父类非private的属性和方法
  2. 可以拥有自己的属性和方法(对父类进行扩展)
  3. 可以用自己的方式重写(覆盖)父类的方法
  4. 只能继承1个类, 但可以实现多个接口.

对象引用

super 当前对象的父对象引用
this 当前对象的引用

构造方法

用super调用父类的构造方法必须放在子类构造方法的第一句

重载

相同的方法名, 不同的参数, 用来调用不同的方法
java code

int add(int a, int b) {    return a + b;}double add(double a, double b) {    return a + b;}

重写

覆盖父对象的方法, 使用父对象方法使用super
在重写方法上方加入@Override注解, 区分普通方法.
java code

class Animal {    public void eat() {        System.out.println("eat sth");    }}class Dog extends Animal{    @Override    public void eat() {        System.out.println("eat bone");    }}public class OverrideDemo {    public static void main(String args[]){        Animal animal = new Animal();        Animal dog = new Dog();        animal.eat();        dog.eat();    }}

多态

父对象的引用指向子对象, 再进行操作.
java code

abstract class Animal {    abstract void eat();}class Cat extends Animal {    @Override    public void eat() {        System.out.println("eat fish");    }}class Dog extends Animal {    @Override    public void eat() {        System.out.println("eat bone");    }}public class PolyDemo {    public static void main(String[] args) {        Animal cat = new Cat();        Animal dog = new Dog();        cat.eat();        dog.eat();    }}

访问控制

可以修饰类, 变量和方法

修饰符 功能 public 无限制访问 protected 类与子类中访问 default 同文件内访问 private 只能在类中访问

抽象类

abstract class
1. 不能被实例化.
2. 有抽象方法的类是抽象类, 反之不成立.
3. 抽象方法只有声明, 没有实现.
4. 构造方法和类方法(静态方法)不能声明为抽象方法.
5. 子类必须给出抽象方法的具体实现, 除非子类也是抽象类.

接口

interface
除了以下2点外与抽象类相同
1. 方法是自动被public修饰的抽象方法
2. 变量自动被public static final修饰

创建包

在源文件第一行声明包名
package PKG_NAME;

导入包中的类

包的组织结构与目录结构相同, 用.分隔
import PKG_NAME.CLASS 导入包中特定类
import PKG_NAME.* 导入包中所有类

内部类

可以访问外部类中成员, 无访问修饰符限制.

成员内部类

  1. 不能存在任何static的变量和方法
  2. 依附于外围类, 只有先创建了外围类才能够创建内部类

声明方法

Outer outer = new Outer();Outer.Inner inner = outer.new Inner();

局部内部类

  1. 作用域只有在方法内

匿名内部类

  1. 只有父类的名字, 直接继承/实现.
  2. 只能使用方法作用域中的final局部变量

静态内部类

  1. 创建不需要依赖于外围类
  2. 只能使用外围类的static成员变量和方法
0 0