面向对象基础知识点梳理

类与对象的关系

对象是类的具体实现,类是对象的抽象。

在一个程序中,类是独一无二的,相同的类只有一个。对象是基于类创建的,类的具体化,没有数量限制。

类是定义的抽象的存储数据的规则、处理数据的方式。

对象是具体实现数据存储和数据处理的实例。

创建一个类和类的使用

class Foo {

  private int name;

  public int getName() {

  return name;

  }

  public void setName(int name) {

    this.name = name;

  }

  public void m(int a, int b) {

    System.out.println(a + b);

  }

}

Foo f = new Foo();

 System.out.println(f);

抽象方法、抽象类

被abstract修饰的类和方法被称作抽象类、抽象方法。

抽象方法是一个没有方法体的方法,只提供了方法签名、返回类型等规则,明确了如何去调用以及返回结果的形式。

一个类中如果出现了抽象方法,这个类必须被定义为抽象类,定义为抽象类的类不能被实例化,因为可能包含无法执行的抽象方法。

abstract class Goo{

  public abstract void absMethod();

}

接口

一种可以用来定义数据类型的概念,但是他本身不能直接实例化,因为只有抽象方法,没有具体的方法实现。提供规范标准,也称为边界类,虽然不是类。

interface Hoo {

  void show();

}

接口与抽象类的对比

他们是不同的类型。抽象类是类的一种,而接口是区别于类的。

定义语法不同,接口是interface,抽象类是abstract class

定义内容不一样,接口只包含公有静态常量和抽象方法,抽象类可以包含正常类的所有内容,额外的可以定义抽象方法。

接口是多继承,抽象类遵从类的规则是单继承。

一个具体实现类,只能继承一个抽象类,可以实现多个接口。

Staticthissuper使用

Static:静态的意思,修饰的内容直接和类相关,类可以被访问的地方,只要权限足够就可以访问static修饰的方法和属性,可以修饰方法、属性、代码块。

This:指的当前对象。正在执行的代码,如果能找到执行的对象,this就是指的这个对象,可以调用方法、属性。

Super:指父类的内容,是具体的对象,有了this才有super。继承的情况下如果子类和父类有相同的属性或者方法,可以显式调用父类定义的内容。

异常的体系结构

异常的最大类ThrowableError(开发者无法解决的严重错误)、Exception(可以通过一些处理让程序继续运行,而不终止)。

Error:内存溢出(各种内存区域的溢出)。

Exception:运行时异常(运行才知道是不是有异常)、检查型异常(编译前就得提前处理的异常)。

运行时异常:空指针、数组下标越界、类型转换异常、算数异常

检查型异常:io异常。

异常处理5个关键字的使用

try {

//可能发生异常的代码

} catch (Exception e) {

//出现异常后处理异常的代码

} finally {

//无论是否出现异常都执行的代码

}

 throw new Exception();

public static void main(String[] args) throws Exception {

}

finalfinallyfinalize的区别

final:修饰符,修饰的变量是常量不能改变值;修饰的方法时最终法法,不能被重写;修饰的类是最终类,不能被继承。修饰的内容就是只读的。

finally:异常处理的关键字之一,所在代码块是任何时候都会被执行的,一般用于关闭资源。

finalize:是object类的一个方法名,析构函数,数据对象被销毁时调用的方法。

局部变量、成员变量

定义的位置不一样、作用域不一样、生命周期不一样,初始值不一样,存储位置不一样。

局部变量定义在方法内,作用域是所在代码块,没有初始值,必须先赋值才能使用,是在内容栈中存储的数据,所以生命周期比较短。

成员变量定义在类中,作用域是类的所有范围,不赋值的花也有默认值,可以直接使用,和对象相关,一起存储在堆内,生命周期和对象一样。

重载

发生在一个类中,方法名相同、参数列表不同的方法称之为方法重载,其他所有条件无限制。在java中重载的方法是完全没有关系的多个方法。

public void m(int a, int b) {

  System.out.println(a + b);

}

private int m() {

  return 0;

}

重写

发生在父类与子类中。子类对父类相同的方法进行不同的定义。java中判断相同方法的标准是方法签名。

要求满足里氏替换原则:

方法签名相同(方法名、参数列表);

访问权限修饰符的权限,子类必须必父类不小;

返回类型,子类的返回类型可以被父类的返回类型直接接收;

抛出的异常,子类不能比父类范围大。

abstract class Goo{

  public abstract void absMethod();

}

class Ioo extends Goo {

  @Override

  public void absMethod() {

  }

}

猜你喜欢

转载自www.cnblogs.com/kittybunny/p/11334263.html
今日推荐