class 修饰类
权限修饰符(可以修饰属性和方法)
一 、static 修饰属性,方法 代码块,内部类(所有对象共享)
1修饰属性,这个属性不再是实例变量,而是类变量。
1.1实例变量,即实例的变量,有多少个实例就有多少个变量
1.2类变量,即类的变量,这个类所有的实例共用这个变量
1.3类属性应该使用类去访问,不要使用对象去访问(尽管可以)
2修饰方法,这个方法不再是实例方法,而是类方法。
2.1实例方法,实例的方法,即对象的方法。由对象调用方法。
2.2类方法,类的方法,这个类所有的对象共用这个方法。
2.3类方法应该使用类去访问,不要使用对象去访问(尽管可以)
2.4 静态方法中不能访问实例变量,静态方法只能访问静态属性和静态方法。
静态方法中访问实例方法,不知道访问的是哪个对象的实例方法。
二、final
1 修饰类:说明类是最终的类,即不能有子类,不能被继承。
2修饰方法:说明方法是最终的方法,即方法不能被子类重写。
3 修饰变量(实例变量、局部变量)说明变量是最终的,即变量的值不能发生变化。
定义实例变量时要直接赋值,局部变量定义之后有一次赋值机会。
三、abstract
1 修饰类,抽象类不能创建对象。
2 修饰方法,抽象方法 没有方法体。
抽象方法所在的类必是抽象类。一个非抽象类继承一个抽象类,要求必须重写抽象类中的抽象方法。
四、interface
接口:特殊的抽象类
jdk8之前:接口中所有的方法都必须是抽象方法,都没有方法体
接口中所有的属性都必须是: public static final修饰的变量=常量
接口中所有的方法都必须是:public abstract修饰的
jdk8及之后版本:
可以出现default修饰符修饰的方法和static修饰的方法(有方法体)
五 、接口和抽象类的区别
相同点:1. 接口和抽象类都不能实例化对象。
2. 接口和抽象类都可以使用多态。
3. 接口和抽象类都可以包含抽象方法。
4. 一个类如果实现接口必须实现全部的抽象方法(或者自身定义为抽象类,不实现接口中的方法,由子类去实现),一个类继承抽象类,必须实现全部的抽象方法(或者自身定义为抽象类,不现实接口中的方法,由子类去实现)
不同点:
1. 接口中的属性只能包含静态常量(public static final)。抽象类中的属性可以包含:实例变量、静态变量、常量(静态、非静态),而且访问修饰符可以是(public、缺省、protected、private)2. 接口中的方法通常是抽象方法(Java8开始,可以有默认方法和静态方法)。抽象类中的方法可以包含:实例方法(含getter、setter)、静态方法、抽象方法。
3. 接口不能有构造方法(它不是类),抽象类可以包含构造方法。
4. 接口中不能包含初始化块、静态代码块。抽象类中可以包含初始化块和静态代码块。
5. 接口中的默认方法必须用default修饰。抽象类中不需要default就可以实现方法。
6. 接口可以继承别的接口,而且可以继承多个。抽象类可以继承别的类,但只能继承一个类。
7. 一个普通类,只能有一个父类(包括抽象类),但可以实现多个接口。
六 、{}代码块
分类:
局部代码块(方法内部的代码块)
初始化代码块(不能主动调用,随着对象的创建自动加载,先于构造方法执行
如果有多个代码块,按照从上往下的顺序)
静态代码块 (随着类的加载而加载,只加载一次,如果有多个,从上往下)
七 、方法重载和方法重写的区别
1、首先是含义不同
1)方法重载是在同一个类中,声明多个同名方法,通过参数列表来区分不同的方法,与参数列表的数量、类型和顺序有关,与修饰符和返回值类型以及抛出异常类型无关
2)方法重写(方法覆盖)的前提是发生在具有继承关系的两个类之间,方法重写有以下规则:
a.参数列表必须保持一致
b.返回值类型小于或等于父类的返回值类型
c.方法名必须保持一致
方法的重载和重写的作用不同
重载:在一个类中为一种行为提供多种实现方式并提高可读性
重写:父类方法无法满足子类的要求,子类通过方法重写满足需求
八、this和super的区别
九、4个权限修饰符区别
private 私有的 只能在本类中直接使用
缺省的 默认的 本类 同包
protected 受保护的 本类 同包 不同包子类
public 公有的 在任意类 包都可以直接访问
十、面向对象三大特征
封装,继承,多态
封装的特点
1.保护程序的安全性;
2.隐藏代码的实现细节,因为封装就是将这个类封装起来,留下可以访问的接口;
3.系统可维护性增加;
4.统一接口。
继承的特点
优点:1、提高代码的维护性(只需要改动父类)。2、提高代码的复用性(共性的成员抽取到父类中,子类可以直接继承使用)。
缺点:类和类之间的关系太紧密了。(耦合性增强)
多态 多态是面向对象编程中的一个重要概念,指的是同一种类型的事物,在不同的情况下所表现出的不同的状态和行为。多态性是面向对象编程的一个基本特性,它使得程序更加灵活和可扩展。
好处:提高了程序的扩展性,容易设计出通用的代码。弊端:屏蔽了子类独有的功能。(不过,可以强转类型)
十一、intanceof关键字的作用是:判断对象是不是某个类的实例
instanceof 是一种运算符,用于检查一个对象是否是某个类或其子类的实例。它返回一个布尔值,如果是该类或其子类的实例,则返回 true,否则返回 false。
final 所有对象共享 代表最终类不可以被继承 修饰属性在定义的同时必须赋值,而且值不能更改 修饰局部变量可以在定义之后赋值 但只能一次 final修饰方法不能被重写。
abstract 抽象方法 (没有方法体的方法)抽象方法所在的类必须是抽象类 抽象类中的方法不一定是抽象方法 一个非抽象类继承一个抽象类,必须重写抽象类中的抽象方法 抽象类不能创建对象。
不定参数方法:指的是方法的参数是可变的,不确定的,只有调用的时候,才知道参数的具体个数。不定参数的形参本质上是一个数组。