访问权限控制
访问权限级别
- private 同一个类
- default 同一个包
- protected 不同包的子类
- public 不同包非子类
构造方法
-
构造方法又被称为构造函数/构造器/Constructor
-
构造方法语法结构:
[修饰符列表] 构造方法名 (形式参数列表){ 构造方法体
}
-
对于构造方法来说,“返回值类型”不需要指定,并且也不能写void,只要写上void,那么这个方法就成为普通方法了
-
对于构造方法来说,构造方法的方法名必须和类名保持一致。
-
构造方法存在的意义是,通过构造方法的调用,可以创建对象。
-
调用:new 构造方法名(实参列表)
-
返回值:每一个构造方法实际上执行结束之后都有返回值,但是这个 “return 值;” 这样的语句不需要写。构造方法结束的时候java程序自动返回值。
-
并且返回值类型是构造方法所在类的类型。由于构造方法的返回值类型就是类本身,所以返回值类型不需要编写
-
当一个类中没有定义任何构造方法的话,系统默认给该类提供一个无参数的构造方法,这个构造方法被称为缺省构造器。
-
当一个类显示的将构造方法定义出来了,那么系统则不用默认为这个类提供缺省构造器。建议开发中手动的为当前类提供无参数构造方法。因为无参数构造方法太常用了
-
构造方法支持重载机制。在一个类当中编写多个构造方法,这多个构造方法显然已经构成方法重载机制。
-
test创建对象时使用,将对象中的属性值初始化,实参数量需一致
this关键字
当前类中
static关键字
- 表示“静态”的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块
- 类.变量
- 静态方法不能访问非静态的成员变量
继承
- 概念:子类具有父类的一般特征也会具有自身的特征
- 格式:
class 子类 extends 父类{
···
}
public class Mouse extends Animal{
public Mouse(String myName,int myId){
super(myName,myId);
}
}
- 优点:
- 子类拥有父类非private的属性、方法和构造方法
- 子类拥有自己的属性和方法,即子类可以对父类进行扩展
- 子类可以用自己的方式实现父类的方法
- Java的继承是单继承,但是可以多重继承
- 提高了代码的复用性
- 子类如何使用父类
- 当子父类中的成员变量同名用super区分
- 子类调用父类的属性:super.属性
- 子类调用父类的方法:super.方法
- 子类调用父类的构造方法:super.();
方法的重写
- 特性:
- 相同的方法名称,相同的返回值数据类型、相同的参数列表
- 父类中的private修饰的方法不能被重写
- 子类重写的方法权限修饰符不能比父类的权限符更加严格
抽象
- 格式:
//抽象类
修饰符 abstract class 类名{
//抽象方法
修饰符 abstract 返回值类型 方法名([参数列表]);
} - abstract修饰方法,称为抽象方法,只有方法的定义,没有方法体并且只能定义在抽象类中;
- abstract修饰类,称为抽象类,抽象类不能被直接实例化,需要借助子类重写抽象类中全部的抽象方法,通过子类创建对象
- 抽象类中有构造函数,用于给子类对象进行初始化
- 抽象类可以不定义抽象方法,但少见,目的是不让类创建对象
- 抽象类和一般类的区别
- 抽象类一定是父类,因为需要子类覆盖其方法后才可以对子类实例化
final关键字
- 修饰的类不可以继承
- 修饰的方法不可以重写
- 与static一起修饰变量