1.构造方法
作用:用来给类的成员进行初始化操作
定义格式:权限 方法名(参数列表){ ... } //注意:方法的名字必须和类名完全一致,构造方法不允许写返回值类型,void也不能写
构造方法在什么时候执行呢:在new对象的时候,自动执行,且只运行一次,其他普通方法要调用才能执行
每个class必须拥有构造方法,构造方法不写也有。如果自己手写了构造方法,编译的时候就不会自动添加构造方法了。
2.super关键字
super()调用的是父类的空参构造
super(参数)调用的是父类的有参构造方法
子类中所有的构造方法的第一行有默认的隐式super()语句
3.final关键字
final是最终的意思,不可变,可以用来修饰类,类的成员,以及局部变量
final修饰类:不可被继承,但可以继承其他类
final修饰的方法:不可被覆盖,但父类中没有被final修饰的方法,子类覆盖后可以加final
final修饰的变量:为常量,这些常量只能赋值一次
4.static关键字(实现对象的共享数据)
static修饰成员变量:属于类,而不属于这个类中的某个对象
多个对象在访问或修改static修饰的成员变量时,其中一个对象将static成员变量值进行了修改,其他对象中 的static成员变量值跟着改变,即多个对象共享同一个static成员变量
成员变量加static修饰的应用场景:对个对象之间有没有共性的数据
static修饰成员方法:跟着变量走,如果方法没调用过非静态成员,将方法定义为静态
static修饰的成员的访问方式:类名.静态成员方法名 类名.静态成员变量名
在同一个类中,静态成员只能访问静态成员
定义静态常量:public static final 数据类型 变量名=变量值; //变量名全部大写,多个单词使用下划线连接
使用静态成员:不需要创建对象,直接类名.静态常量(或者静态方法)
注意:接口中的每个成员变量都默认使用public static final修饰。
所有接口中的成员变量已是静态常量,由于接口没有构造方法,所以必须显示赋值。可以直接用接口名访问
5.内部类
概述:将类写在其他类的内部,可以写在其他类的成员位置和局部位置,这时写在其他类内部的类就称为内部类。其他类也称为外部类。
什么时候使用内部类:在描述事物时,若一个事物内部还包含其他可能包含的事物,比如在描述汽车时,汽车中还包含这发动机,这时发动机就可以使用内部类来描述。
内部类的分类:内部类分为成员内部类与局部内部类。
成员内部类:
定义格式:
class 外部类 {
修饰符 class 内部类 {
//其他代码
}
}
访问方式
外部类名.内部类名 变量名 = new 外部类名().new 内部类名();
局部内部类,定义在外部类方法中的局部位置
定义格式
class 外部类 {
修饰符 返回值类型 方法名(参数) {
class 内部类 {
//其他代码
}
}
}
访问方式
在外部类方法中,创建内部类对象,进行访问
6.访问权限
7.修饰符的使用
常用来修饰类、方法、变量的修饰符如下:
public 权限修饰符,公共访问, 类,方法,成员变量
protected 权限修饰符,受保护访问, 方法,成员变量
默认什么也不写 也是一种权限修饰符,默认访问, 类,方法,成员变量
private 权限修饰符,私有访问, 方法,成员变量
static 静态修饰符 方法,成员变量
final 最终修饰符 类,方法,成员变量,局部变量
abstract 抽象修饰符 类 ,方法
我们编写程序时,权限修饰符一般放于所有修饰符之前,不同的权限修饰符不能同时使用;
同时,abstract与private不能同时使用;
同时,abstract与static不能同时使用;
同时,abstract与final不能同时使用。
修饰类能够使用的修饰符:
修饰类只能使用public、默认的、final、abstract关键字
使用最多的是 public关键字
public class Demo {} //最常用的方式
class Demo2{}
public final class Demo3{}
public abstract class Demo4{}
修饰成员变量能够使用的修饰符:
public : 公共的
protected : 受保护的
: 默认的
private :私有的
final : 最终的
static : 静态的
使用最多的是 private
public int count = 100;
protected int count2 = 100;
int count3 = 100;
private int count4 = 100; //最常用的方式
public final int count5 = 100;
public static int count6 = 100;
修饰构造方法能够使用的修饰符:
public : 公共的
protected : 受保护的
: 默认的
private :私有的
使用最多的是 public
public Demo(){} //最常用的方式
protected Demo(){}
Demo(){}
private Demo(){}
修饰成员方法能够使用的修饰符:
public : 公共的
protected : 受保护的
: 默认的
private :私有的
final : 最终的
static : 静态的
abstract : 抽象的
使用最多的是 public
public void method1(){}//最常用的方式
protected void method2(){}
void method3(){}
private void method4(){}
public final void method5(){}
public static void method6(){}//最常用的方式
public abstract void method7();//最常用的方式
8.代码块
局部代码块是定义在方法或语句中
特点:
以”{}”划定的代码区域,此时只需要关注作用域的不同即可
方法和类都是以代码块的方式划定边界的
构造代码块是定义在类中成员位置的代码块
特点:
优先于构造方法执行,构造代码块用于执行所有对象均需要的初始化动作
每创建一个对象均会执行一次构造代码块。
静态代码块是定义在成员位置,使用static修饰的代码块。
特点:
它优先于主方法执行、优先于构造代码块执行,当以任意形式第一次使用到该类时执行。
该类不管创建多少对象,静态代码块只执行一次。
可用于给静态变量赋值,用来给类进行初始化。
9.自定义数据类型的使用:
类作为方法参数时,说明要向方法中传入该类的对象
类作为方法返回值时,说明该方法要返回一个该类的对象。
抽象类作为方法参数时,说明要传入一个实现抽象类所有抽象方法的子类对象。
抽象类作为方法返回值时,说明需要返回一个实现抽象类所有抽象方法的子类对象。
接口作为方法参数时,说明该方法要传入一个接口实现类对象。