JAVA进阶-面向对象

final关键字

  1. 采用final修饰的类不能被继承

  2. 采用final修饰的方法不能被覆盖

  3. 采用final修饰的变量(基本类型)不能被修改

  4. 采用final修饰的变量必须初始化

  5. 如果修饰的引用,那么引用只能指向一个对象,也就是说引用不能被再次赋值,但被指向的对象是可以修改的

抽象类

abstract关键字

抽象类,抽象方法

抽象类

  1. 抽象类无法实例化,必须被子类继承

  2. 如果类中有抽象方法,则这个类必须被定义为抽象类

抽象方法

  1. 抽象方法只能在抽象类中

  2. 抽象方法提供申明,不需要实现

  3. 抽象类的子类必须重写父类的抽象方法,如果不重写,则必须再次定义为抽象类

抽象类,抽象方法都不能被final关键字修饰

接口

可以把接口看作是抽象类的一种特殊情况,在接口中只能定义常量和抽象方法

  1. 在java中,接口采用interface声明

  2. 接口不能被实例化,接口中没有构造函数的概念

  3. 接口之间可以继承,但接口之间不能实现

  4. 接口中与类称为实现,通过implements关键字

  5. 如果一个类实现接口,那么接口中的所有方法必须实现

  6. 一个类可以实现多个接口

接口和抽象类的区别

  • 接口描述了方法的特征,不给出实现。解决了Java中的单继承问题

  • 抽象类提供了方法的部分实现,主要的作用是把公共的代码提取到抽象类中

  • 实际开发过程中,我们要面向接口编程,而不要面向具体编程

  • 优先选择接口

类之间的关系

is-a、is-like-a、has-a

Object类

Objice类是所有java类的根基类

toString()

返回一个“以文本方式”表示此对象的字符串

通常Object父类的方法的实现不是我们想要的,我们需要重写此方法

==与equals方法

  • 等号==

可以比较基本类型和引用类型,比较基本比较的是具体的值,比较引用比较的是引用类型的地址

  • equals方法

Object类的equals()默认比较的是地址,如果不准备调用父类的equals方法,那么必须覆盖父类的equals方法

instanceof()

向下转型要使用instanceof()判断是否是同一类型

包和import

  1. 包最好采用小写字母

  2. 包有命名规则,不能重复,最好采用公司网站逆序

  3. package必须放在所有语句的第一行,注释除外

  4. JDK常用开发包

    • java.lang,java语言标准包,使用此包无需import导入

    • java.sql,提供了JDBC接口

    • java.util,提供了常用工具类

    • java.io,提供了io相关的包

访问控制权限

修饰符子类所有地方
private × × ×
default × ×
protected ×
public

内部类

内部类:在类的内部又定义了一个新的类,被称为内部类

内部类的分类:

静态内部类:

实例内部类:

局部内部类:

使用内部类编写的代码可读性很差,能不用尽量不用

匿名内部类

 new 接口(){

  接口中方法的实现

}

posted on 2022-02-07 22:40  pandastudy  阅读(39)  评论(0)    收藏  举报