目录
类和对象
APl
继承
多态
接口
抽象类与接口的区别
形参与返回值
内部类
final关键字
类的五大成员:属性 、方法、构造器、代码块、内部类
类的定义:是对现实生活中一类具有共同属性和行为事物的抽象,确定对象将会拥有的属性和行为、
类的组成:属性和行为
private 关键字
是一个权限修饰符
可以修饰成员(成员变量和成员方法)
作用是保护成员不被别的类使用,被private修饰的成员只在本类中才能访问
针对private修饰的成员变量,如果需要被其他类使用,提供相应的操作
提供“get变量名()” 方法,用于获取成员变量的值,方法用public修饰
提供“set变量名(参数)”方法,用于设置成员变量的值,方法用public修饰
构造方法:
构造方法是一种特殊的方法
作用:创建对象
功能:主要是完成对数据的初始化
APL(Application Programming Interface):应用程序编程接口
java API:指的是JDK中提供的各种功能的Java类
继承是面向对象三大特征之一,可以使得子类具有父类的属性和方法,还可以在子类中重新定义,追加属性和方法
继承的格式: public class 子类名 extends 父类名{ }
方法重写
方法重写就是子类有一个方法,和父类的某一个方法的名称、返回类型、参数一样,那么就说子类的这个方法覆盖了父类的方法
同一个对象,在不同时刻表现出来的不同形态
多态的前提:
有继承 / 实现的关系
有方法的重写
有父类引用指向子类对象
多态中成员访问特点
成员变量:编译看左边,执行看左边
成员方法:编译看左边,执行看右边
java的动态绑定机制
1.当调用对象方法的时候,该方法会和对象的内存地址 / 运行类型 绑定
2.当调用对象属性是,没有动态绑定机制,哪里声明,那里使用
抽象类
在java中,一个没有方法体的方法应该定义为抽象方法,而类中如果有抽象方法,该类必须定义为抽象类
抽象类的特点:
抽象类和抽象方法必须使用abstract 关键字修饰
public abstract class 类名{
public abstract void eat();
}
⚡️抽象类中不一定有抽象方法,有抽象方法的类一定是抽象类
⚡️抽象类不能实例化
⚡️abstract只能修饰类和方法,不能修饰属性和其它的
⚡️如果一个类继承了抽象类,则它必须实现抽象类的所有抽象方法,除非它自己也声明为abstract类
⚡️抽象方法不能使用private、 final、static来修饰,因为这些关键字都是和重写相违背的
抽象类如何实例化?参照多态的方式,通过子类对象实例化,这叫抽象类多态
⚡️抽象类的子类
⚡️要么重写抽象类中的所有抽象方法
⚡️要么是抽象类
抽象类的成员特点
成员变量
⚡️可以是变量
⚡️也可以是常量
构造方法
有构造方法,但是不能实例化
抽象类中的构造方法作用是:用于子类访问父类数据的初始化
成员方法
可以有抽象方法:限定子类必须完成某些动作
也可以有非抽象方法:提高代码复用性
定义:接口就是给出一些没有实现的方法,封装到一起,到某个类要使用的时候,在根据具体情况把这些方法写出来。
接口也就是特殊的方法
接口的特点:
接口用关键字interface修饰
public interface 接口名{ }
类实现接口用 implements 表示
public class 类名 implements 接口名 { }
接口不能实例化
接口如何实例化 参照多态的方式,通过实现类对象实例化,这叫接口多态
接口的实现类
要么重写接口中的所有抽象方法
要么是抽象类
接口中的属性,只能是fianl的,而且是public static final 修饰符
public interface JumpingDemo {
//这两句是等价的
// public static final int num =10;
int num = 10;
//抽象方法
public abstract void jump();
}
成员区别:
⚡️抽象类:常量,变量;有构造方法;有抽象方法;也有非抽象方法
⚡️接口:常量;抽象常量
关系区别:
⚡️类与类:继承,单继承
⚡️类与接口:实现,可以单实现,也可以多实现、
⚡️接口与接口:继承,单继承,也可以多继承
设计理念区别:
⚡️抽象类:对类抽象,包括属性和行为
⚡️接口:对行为抽象,主要是行为
类名作为形参和返回值
⚡️方法的形参是类名。其实需要的是该类的对象
⚡️方法的返回值是类名,其实返回的是该类的对象
抽象类名作为形参和返回值
⚡️方法的形参是抽象类类名,其实需要的是该类抽象类的子类对象
⚡️方法的返回值是抽象类名,其实返回的是该类抽象类的子类对象
接口作为形参和返回值
⚡️方法的形参是接口名,其实需要的是该接口的实现类对象
⚡️方法的返回值是接口名,其实返回的是该接口的实现类对象
定义:就是在一个类中定义一个类,
内部类的访问特点:
⚡️内部类可以直接访问外部类的成员,包括私有
⚡️外部类要访问内部类的成员,必须创建对象
局部内部类
⚡️局部内部类是在方法中定义的类,所以外界是无法直接使用,需要在方法内部创建对象并使用
⚡️该类可以直接访问外部类的成员,也可以访问方法内的局部变量
匿名内部类
前提:存在一个类或者接口,这里的类可以是具体类也可以是抽象类
new 类名或者接口名(){
重写方法;
}
final中文意思是最后的,最终的
final可以修饰类,属性,方法,和局部变量
final作用:
1.⚡️当不希望类被继承时,可以使用fianl修饰
2.⚡️当不希望父类的某个方法被子类覆盖/重写(override)时,可以使用final关键字
3.⚡️当不希望类的某个属性的值被修改,可以使用fianl修饰
4.⚡️当不希望某个局部变量被修改,可以使用final修饰