java面向对象

目录

类和对象

APl

继承

多态

接口

抽象类与接口的区别

形参与返回值

内部类

final关键字


类和对象

类的五大成员:属性 、方法、构造器、代码块、内部类

类的定义:是对现实生活中一类具有共同属性和行为事物的抽象,确定对象将会拥有的属性和行为、

类的组成:属性和行为

private 关键字

是一个权限修饰符

可以修饰成员(成员变量和成员方法)

作用是保护成员不被别的类使用,被private修饰的成员只在本类中才能访问

针对private修饰的成员变量,如果需要被其他类使用,提供相应的操作

提供“get变量名()” 方法,用于获取成员变量的值,方法用public修饰

提供“set变量名(参数)”方法,用于设置成员变量的值,方法用public修饰

构造方法:

构造方法是一种特殊的方法

作用:创建对象

功能:主要是完成对数据的初始化

APl

APL(Application Programming Interface):应用程序编程接口

java API:指的是JDK中提供的各种功能的Java类

继承

继承是面向对象三大特征之一,可以使得子类具有父类的属性和方法,还可以在子类中重新定义,追加属性和方法

继承的格式: public class 子类名 extends 父类名{ }

方法重写

方法重写就是子类有一个方法,和父类的某一个方法的名称、返回类型、参数一样,那么就说子类的这个方法覆盖了父类的方法

java面向对象_第1张图片

 

多态

  • 同一个对象,在不同时刻表现出来的不同形态

  • 多态的前提:

  • 有继承 / 实现的关系

  • 有方法的重写

  • 有父类引用指向子类对象

多态中成员访问特点

  • 成员变量:编译看左边,执行看左边

  • 成员方法:编译看左边,执行看右边

java的动态绑定机制

1.当调用对象方法的时候,该方法会和对象的内存地址 / 运行类型 绑定

2.当调用对象属性是,没有动态绑定机制,哪里声明,那里使用

抽象类

在java中,一个没有方法体的方法应该定义为抽象方法,而类中如果有抽象方法,该类必须定义为抽象类

抽象类的特点:

  • 抽象类和抽象方法必须使用abstract 关键字修饰

public abstract class 类名{
      
    public abstract void eat();
}
​
  • ⚡️抽象类中不一定有抽象方法,有抽象方法的类一定是抽象类

  • ⚡️抽象类不能实例化

  • ⚡️abstract只能修饰类和方法,不能修饰属性和其它的

  • ⚡️如果一个类继承了抽象类,则它必须实现抽象类的所有抽象方法,除非它自己也声明为abstract类

  • ⚡️抽象方法不能使用private、 final、static来修饰,因为这些关键字都是和重写相违背的

抽象类如何实例化?参照多态的方式,通过子类对象实例化,这叫抽象类多态

  • ⚡️抽象类的子类

  • ⚡️要么重写抽象类中的所有抽象方法

  • ⚡️要么是抽象类

抽象类的成员特点

成员变量

  • ⚡️可以是变量

  • ⚡️也可以是常量

构造方法

  • 有构造方法,但是不能实例化

  • 抽象类中的构造方法作用是:用于子类访问父类数据的初始化

成员方法

  • 可以有抽象方法:限定子类必须完成某些动作

  • 也可以有非抽象方法:提高代码复用性

接口

定义:接口就是给出一些没有实现的方法,封装到一起,到某个类要使用的时候,在根据具体情况把这些方法写出来。

接口也就是特殊的方法

接口的特点:

接口用关键字interface修饰

public interface 接口名{ }

类实现接口用 implements 表示

public class 类名 implements 接口名 { }

接口不能实例化

接口如何实例化 参照多态的方式,通过实现类对象实例化,这叫接口多态

接口的实现类

要么重写接口中的所有抽象方法

要么是抽象类

java面向对象_第2张图片

 

接口中的属性,只能是fianl的,而且是public static final 修饰符


public interface JumpingDemo {

    //这两句是等价的 
   // public static  final  int num =10;
      int num = 10;
    
    //抽象方法
    public abstract void jump();
}

抽象类与接口的区别

成员区别:

  • ⚡️抽象类:常量,变量;有构造方法;有抽象方法;也有非抽象方法

  • ⚡️接口:常量;抽象常量

关系区别:

  • ⚡️类与类:继承,单继承

  • ⚡️类与接口:实现,可以单实现,也可以多实现、

  • ⚡️接口与接口:继承,单继承,也可以多继承

设计理念区别:

  • ⚡️抽象类:对类抽象,包括属性和行为

  • ⚡️接口:对行为抽象,主要是行为

形参与返回值

类名作为形参和返回值

  • ⚡️方法的形参是类名。其实需要的是该类的对象

  • ⚡️方法的返回值是类名,其实返回的是该类的对象

抽象类名作为形参和返回值

  • ⚡️方法的形参是抽象类类名,其实需要的是该类抽象类的子类对象

  • ⚡️方法的返回值是抽象类名,其实返回的是该类抽象类的子类对象

接口作为形参和返回值

  • ⚡️方法的形参是接口名,其实需要的是该接口的实现类对象

  • ⚡️方法的返回值是接口名,其实返回的是该接口的实现类对象

内部类

定义:就是在一个类中定义一个类,

内部类的访问特点:

  • ⚡️内部类可以直接访问外部类的成员,包括私有

  • ⚡️外部类要访问内部类的成员,必须创建对象

局部内部类

  • ⚡️局部内部类是在方法中定义的类,所以外界是无法直接使用,需要在方法内部创建对象并使用

  • ⚡️该类可以直接访问外部类的成员,也可以访问方法内的局部变量

匿名内部类

前提:存在一个类或者接口,这里的类可以是具体类也可以是抽象类

new 类名或者接口名(){
    重写方法;
}

final关键字

final中文意思是最后的,最终的

final可以修饰类,属性,方法,和局部变量

final作用:

1.⚡️当不希望类被继承时,可以使用fianl修饰

2.⚡️当不希望父类的某个方法被子类覆盖/重写(override)时,可以使用final关键字

3.⚡️当不希望类的某个属性的值被修改,可以使用fianl修饰

4.⚡️当不希望某个局部变量被修改,可以使用final修饰

你可能感兴趣的