一丶方法:

1.在main方法中使用 2.调用格式: 方法名();

注意:

1.方法必须先创建才可以使用,该过程成为方法定义

2.方法创建后并不是直接可以运行的,需要手动使用后,才执行,该过程成为方法调用

定义方法格式:
修饰符 返回值类型 方法名(参数列表){
//代码省略…
return 结果;
}

修饰符: public static固定写法

返回值类型: 表示方法运行的结果的数据类型,方法执行后将结果返回到调用者

参数列表: 方法在运算过程中的未知数据,调用者调用方法时传递

return: 将方法执行后的结果带给调用者,方法执行到 return ,整体方法运行结束

小贴士:return 结果; 这里的”结果”在开发中,我们正确的叫法成为方法的返回值

定义方法注意事项

1.定义位置:类中方法外,不能嵌套定义

2.方法必须先定义,再使用

3.void表示无返回值,可以省略return,也可以单独的书写return

4.不能在return后面写代码,return意味着方法结束,所有后面的代码记永远都不会执行,属于无效代码

5.定义方法时()中的参数,我们称之为:形式参数,在调用该方法时传递的参数,我们称之为:实际参数

方法的重载:

1.指在同一个类中,允许存在一个以上的同名方法,只要它们的参数列表不同即可,与修饰符和返回值类型无关。 2.参数列表:个数不同,数据类型不同,顺序不同。 3.重载方法调用:JVM通过方法的参数列表,调用不同的方法。

注意事项
  1. * 重载仅对应方法的定义,与方法的调用无关,调用方式参照标准格式
  2. * 重载仅针对同一个类中方法的名称与参数进行识别,与返回值无关,换句话说不能通过返回值来判定两个方法是否相互构成重载

注意 :
基本数据类型的参数,形式参数的改变,不影响实际参数
对于引用类型的参数,形式参数的改变,影响实际参数的值

二丶类
含义:
类是一组相关属性和行为的集合。可以看成是一类事物的模板,使用事物的属性特征和行为特征来描述该类事物。
定义:

类的组成是由属性和行为两部分组成

属性:在类中通过成员变量来体现(类中方法外的变量)

行为:在类中通过成员方法来体现(和前面的方法相比去掉static关键字即可

类的格式:
public class ClassName {
//成员变量
//成员方法
}
创建对象的格式
类名 对象名 = new 类名();
访问类中的成员:
对象名.成员变量;
对象名.成员方法();
成员变量默认值:
image-20201104232954593.png
1.封装:
原则
将属性隐藏起来,若需要访问某个属性,提供公共方法对其访问。
如何封装:

使用 private 关键字来修饰成员变量。

对需要访问的成员变量,提供对应的一对 getXxx 方法 、setXxx 方法

private 使用格式:
private 数据类型 变量名 ;

this的含义

this代表所在类的当前对象的引用(地址值),即对象自己的引用。 记住 :方法被哪个对象调用,方法中的this就代表那个对象。即谁在调用,this就代表谁。** **

this的使用格式 :this.成员变量名;

构造方法的格式: 修饰符 构造方法名(参数列表){ 有参 // 方法体 } 修饰符 构造方法名(){ }无参 注意事项: 1. 如果你不提供构造方法,系统会给出无参数构造方法。 2. 如果你提供了构造方法,系统将不再提供无参数构造方法。 3. 构造方法是可以重载的,既可以定义参数,也可以不定义参数。(一般使用个数不同)

2.继承
含义:
继承:就是子类继承父类的属性和行为,使得子类对象具有与父类相同的属性、相同的行为。子类可以直接访问父类中的非私有的属性和行为。

继承的好处

提高代码的复用性

类与类之间产生了关系,是多态的前提

继承的格式

通过 extends 关键字,可以声明一个子类继承另外一个父类,定义格式如下:

  • class 父类 { … }
    class 子类 extends 父类 { … }
  • 子父类中出现了同名的成员变量时,在子类中需要访问父类中非私有成员变量时,需要使用super关键字,修饰父类成员变量,类似于之前学过的this
  • 使用格式:super.父类成员变量名
  • 方法的重写
  • 如果子类父类中出现重名的成员方法,这时的访问是一种特殊情况,叫做方法重写(Override)。
  • 方法重写:子类中出现与父类一模一样的方法时(返回值类型,方法名和参数列表都相同),会出现覆盖效果,也称为重写或者复写。声明不变,重新实现。

    注意事项:

  1. 子类方法覆盖父类方法,必须要保证权限大于等于父类权限。
    2. 子类方法覆盖父类方法,返回值类型、函数名和参数列表都要一模一样
    访问构造方法的注意事项:
  • 在子类构造方法中的第一行默认有 super() ,给父类进行初始化的
    • 在子类构造方法中可以手动调用父类其他重载的构造方法
      格式: super(参数列表);
  • super 是写在子类的构造方法的第一行.
  • 继承的特点:
  • Java只支持单继承,不支持多继承
  • Java支持多层继承(继承体系)
  • 顶级父类Object时所有类的父类(所有类都直接或间接继承Object)
  • 子类和父类是一种相对的概念
  • 一个父类可以有很多个子类
  • 3.

3.抽象方法
什么是抽象方法

只有方法的声明,没有方法体的方法,就是抽象方法

什么是抽象类

抽象方法所在的类必定是一个抽象类

抽象方法

使用abstract关键字修饰方法,该方法就成了抽象方法,抽象方法只包含一个方法名,而没有方法体。

定义格式

修饰符 abstract 返回值类型 方法名 (参数列表);


6.4 抽象的注意事项

  • 抽象类不能创建对象,如果创建,编译无法通过而报错。只能创建其非抽象子类的对象。理解:假设创建了抽象类的对象,调用抽象的方法,而抽象方法没有具体的方法体,没有意义。
  • 抽象类中,可以有构造方法,是供子类创建对象时,初始化父类成员使用的。抽象类中,可以有构造方法,是供子类创建对象时,初始化父类成员使用的。
  • 抽象类中,可以有构造方法,是供子类创建对象时,初始化父类成员使用的。理解:未包含抽象方法的抽象类,目的就是不想让调用者创建该类对象,通常用于某些特殊的类结构设计。
  • 抽象类的子类,必须重写抽象父类中所有的抽象方法,否则,编译无法通过而报错。除非该子类也是抽象类理解:假设不重写所有抽象方法,则类中可能包含抽象方法。那么创建对象后,调用抽象的方法,没有意义。

三丶接口

接口定义格式

接口用关键字interface修饰
public interface 接口名 {}
2.1.3 接口的使用
接口是不能创建对象,必须有实现类才能使用,类实现接口用implements表示
public class 类名 implements 接口名 {}
==注意: 接口的实现类必须重写接口中的所有的抽象方法,要么该类是一个抽象类==

继承父类并实现多个接口

之前学过,在继承体系中,一个类只能继承一个父类。而对于接口而言,一个类是可以实现多个接口的,这叫做接
口的多实现。并且,一个类能继承一个父类,同时实现多个接口。

2.5.1 多实现格式

class 类名 [extends 父类名] implements 接口名1,接口名2,接口名3… {
// 重写接口中抽象方法【必须】
// 重写接口中默认方法【不重名时可选】
}
注意事项:

  • 接口中,有多个抽象方法时,实现类必须重写所有抽象方法。如果抽象方法有重名的,只需要重写一次即可!如果实现类继承了父类,这个父类是一个抽象类时,我们还需要再重写抽象类中的所有抽象方法。

总结

接口中只有常量和抽象方法

接口是没有静态代码块和构造方法的。
  • public class MyInterfaceImpl implements MyInterfaceA, MyInterfaceB { // 覆盖重写所有抽象方法}
    一个类的直接父类是唯一的,但是一个类可以同时实现多个接口。 单继承多实现
    如果实现类所实现的多个接口当中,存在重复的抽象方法,那么只需要覆盖重写一次即可。
    如果实现类没有覆盖重写所有接口当中的所有抽象方法,那么实现类就必须是一个抽象类。


    四丶多态

    1.什么是多态

    多态是继封装、继承之后,面向对象的第三大特性。
    生活中,比如跑的动作,小猫、小狗和大象,跑起来是不一样的。再比如飞的动作,昆虫、鸟类和飞机,飞起来也是不一样的。可见,同一行为,通过不同的事物,可以体现出来的不同的形态。多态,描述的就是这样的状态。

    定义:同一个对象,在不同时刻表现出来的形态是不同的

    多态的前提

  • 要有继承或实现关系
    - 要有方法的重写
    - 要有父类引用指向子类对象

    3.3 多态格式

    普通类多态的格式
  • 父类 对象 = new 子类();

    抽象类多态的格式

    抽象类 对象名 = new 抽象类子类()

    接口多态的格式

    接口 对象名 = new 接口实现类();

    多态的好处和弊端

    3.5.1 多态的好处

    提高程序的扩展性。定义方法时候,使用父类型作为参数,在使用的时候,使用具体的子类型参与操作

    3.5.2 多态的弊端

    不能使用子类的特有成员

    3.5.3 多态的好处代码演示

    实际开发的过程中,父类类型作为方法形式参数,传递子类对象给方法,进行方法的调用,更能体现出多态的扩展性与便利 多态中的转型

    向上转型

    多态本身是子类类型向父类类型向上转换的过程,这个过程是默认的。

    使用格式:
    • 父类类型 变量名 = new 子类类型();
      如:Animal a = new Cat();

      向下转型

      父类类型向子类类型向下转换的过程,这个过程是强制的。 一个已经向上转型的子类对象,将父类引用转为子类引用,可以使用强制类型转换的格式,便是向下转型。
      使用格式
    • 子类类型 变量名 = (子类类型) 父类变量名;
      如:Cat c =(Cat) a;