JAVA学习笔记分享(java基础---面向对象编程)

目录

本人菜鸡大学生,刚开始学习java,笔记会有很多不严谨不完整的地方,欢迎大佬指正!我将会持续更新与完善。

1.类和对象

2.方法的重载的条件:

3.变量

4.封装

5.类的继承(extends)

6.多态

7.静态初始化块

8.final修饰符

9.抽象类(abstract)

10.接口(interface、实现用 implements )

12.内部类

13.匿名类

14.获取时间戳的三种方式

 


本人菜鸡大学生,刚开始学习java,笔记会有很多不严谨不完整的地方,欢迎大佬指正!我将会持续更新与完善。

1.类和对象

类(FCM):F:filed:属性,C:constructor:构造器,M:method:方法(函数)(出口,入口,函数体); 

面向对象的三大特征:封装、继承、多态            

1.1.类的定义:

1.2.定义变量的语法格式

1.3.定义方法的语法格式

1.4.构造方法的语法格式

主要用来创建类的实例化对象,可以完成创建实例化对象的初始化工作

JAVA学习笔记分享(java基础---面向对象编程)_第1张图片

1.5对象的使用

1.6.this的调用:

  1. 当局部变量和成员变量重名的时候可以使用 this 指定调用成员变量
  2. 通过 this 调用另一个构造方法
  3. 在构造方法中,如果使用 this 方法调用和其他构造方法,那么 this 语句必须放在第 一句。如果不放在第一句,会发生编译错误

1.7.spuer:在子类方法中调用父类被覆盖的实例方法,必须写在构造方法中的第一行

  1. 用于访问父类中定义的属性 super.父类属性[两个属性重名]
  2. 用于访问父类中定义的方法 super.方法[重写与被重写时]
  3. 用于访问父类中定义的构造器 super (形参列表)来显示的调用父类中指定的构造器

2.方法的重载的条件:

  • 方法名称相同
  •  方法参数类型、个数、顺序至少有一个不同
  •  方法的返回类型可以不同,因为方法重载和返回类型没有任何关系
  •  方法的修饰符可以不同,因为方法重载和修饰符没有任何关系
  •  方法重载只出现在同一个类中

2.1方法的覆盖(Override)的条件:

  •  必须要有继承关系
  •  覆盖只能出现在子类中,如果没有继承关系,不存在覆盖,只存在重载
  •  在子类中被覆盖的方法,必须和父类中的方法完全一样,也就是方法名,返回类型、 参数列表,完全一样
  •  子类方法的访问权限不能小于父类方法的访问权限
  •  子类方法不能抛出比父类方法更多的异常,但可以抛出父类方法异常的子异常
  •  父类的静态方法不能被子类覆盖(不被称为覆盖),静态方法处理的时候,访问权 限发生错误也会提示覆盖
  •  父类的私有方法不能覆盖  覆盖是针对成员方法,而非属性

 

3.变量

JAVA学习笔记分享(java基础---面向对象编程)_第2张图片

区别:成员变量:定义在类中,有初始值

           局部变量:定义在方法中,无初始值

4.封装

将类的某些信息隐藏在类内部,不允许外部程序直接访问,而且通过该类提供的方法来实现对隐藏信息的操作和访问。

5.类的继承(extends)

继承的特点:
1,java类没有多继承,只有单继承,但是可以多重继承
2,不能继承父类的三种情况 private成员、构造方法、子类与父类不在同包,使用默认访问权限的成员
3,java中所有的类的祖先都是Object类
4,不同的叫法 父类:基类,超类 子类:派生类

访问修饰符总结:

JAVA学习笔记分享(java基础---面向对象编程)_第3张图片

5.1.子类重写父类方法(覆盖):

三相同:方法名,形参列表(个数,类型,顺序都相同),返回值

一大:子类访问权限比父类要大或相等

一小:子类抛出的异常比父类要小或相等

6.多态

可以理解为一个事物的多种表现形态;通过父类的引用指向子类的对象实体,当调用方法时,实际执行的是子类重写父类的方法。

对于多态来说,编译时,”看左边“,将此引用变量理解为父类的类型;运行时,”看右边“,关注于真正对象的实体,子类的对象,那么执行的方法就是子类重写的。

多态存在的条件: 有继承、有覆盖、父类指向子类的引用;

6.1.转型

  • 向上转型:把子类转换为父类,属于自动类型转换。
  • 向下转型:把父类转换为子类,必须强制类型转换。

注意:
1,向上转型后通过父类引用变量调用的方法是子类覆盖或继承父类的方法,
通过父类引用变量无法调用子类特有的方法。
2,向下转型后可以访问子类特有的方法,必须转换为父类指向的真实子类类型,
否则将出现转换异常(ClassCastException)。

4.instanceof:运算符用于判断一个对象是否属于一个类或实现一个接口。
instanceof:运算符通常和强制类型转换结合使用,先通过instanceof进行类型判断,
再进行相应的强制类型转换。

7.静态初始化块

初始化块是 Java 类里可以出现的第 4 种成员(前面 3 个依次有属性、方法和构造方法)

如果定义了初始化块使用了static修饰符,则这个初始化块就变成了静态初始化块,也就被称为类初始化块。

执行的优先级:静态代码块 》一般代码块 》构造器,

8.final修饰符

最终的,可用于修饰类、属性和方法,被其修饰的类、变量和方法将无法发生改变。

1.修饰类,这个类不可以被继承

2.修饰方法,这个方法不可以被重写

3.final修饰属性,此属性就是一个常量,用大些字符去表示

9.抽象类(abstract)

  • abstract修饰类,抽象类
  • 不可被实例化
  • 抽象类中可以没有抽象方法
  • abstract修饰方法,抽象方法
  • 抽象方法只保留功能,具体的实现交给子类重写
  • 抽象方法所在的类,必须为抽象类
  • 若子类继承抽象类,并重写了所有的抽象方法,则此类是一个实体类,既可以实例化
  • 子类继承抽象类,没有重写所有的抽象方法,则此类必须声明为抽象方法。
  • abstract不能用来修饰属性 构造器 

4.抽象方法和抽象类必须使用 abstract 修饰符进行定义,有抽象方法的类只能被定义成抽象 类,抽象类里可以没有抽象方法。

5.抽象类不能创建实例,它只能当成父类来被继承。

10.接口(interface、实现用 implements )

[修饰符] interface 接口名 extends 父接口 1,父接口 2…{

零个或多个常量定义… 零个或多个抽象方法定义…

}

2,接口的特征:
1.不能被实例化,接口没有构造方法
2.接口只能被实现implements 或者继续定义为接口
3.接口中的属性默认是 public static fianl 修饰的静态常量
4.接口中的方法默认是 public abstract 修饰的抽象方法
5. 只能有抽象方法
6. 接口中的方法必须被子类重写
7.一个类实现多个接口用逗号隔开
8.如果一个类有继承又有实现,那么是先继承再实现
9.接口可以继承多个接口,用逗号隔开

10.类和接口是实现(implements)关系,一个类可以实现多个接口;接口和接口是继承(extends)关系,可以继承多个接口;

11.接口和抽象类在用法上的差别

⚫ 接口里只能包含抽象方法,不包含已经提供实现的方法;抽象类中则完全可以包含普 通方法。

⚫ 接口里不能定义静态方法;抽象类可以定义静态方法。

⚫ 接口里只能定义静态常量属性,不能定义普通属性;而抽象类里则既可以定义普通属 性,也可以定义静态常量属性。

⚫ 接口不包含构造方法;抽象类里可以包含构造方法,但并不是用于创建对象,而是让 其子类调用这些构造方法来完成属于抽象类的初始化操作。

⚫ 接口里不能包含初始化块;但抽象类则完全可以包含初始化块。

⚫ 一个类最多只能有一个直接父类,包括抽象类;但一个类可以直接实现多个接口,通 过这些接口弥补 Java 单继承方面的不足。

12.内部类

类的第五类成员,类里面定义的类成为内部类;

13.匿名类

匿名类就是没有名称的内部类,它将类和类的方法定义在一个表达式中。

 

14.获取时间戳的三种方式

1)System.currentTimlls()
2)Calendar.getInstance().getInTimeMills()
3)new Date().getTime()

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(java,抽象类,多态)