继承:
继承了父类的属性和方法
子类同时也继承了父类的类型
方法重载:首先在同一个类中存在多个同名的方法,但是参数列表必须不同(数量 类型 顺序),其次访问修饰符返回值类型可以不一样
class Test{
public static void main(String[] args){
System.out.println ("hello world");
System.out.println (10);
System.out.println ('a');
System.out.println (1 == 1);
System.out.println (new Object ());
}
}
方法重写: 子类中重写父类中的方法
例如:一个动物类,他们共有的属性是吃。但在动物类中又分为牛羊类和狮子老虎类。而这两个类对于吃的方法还有一些区别,即牛羊类(频率高 消化过程快 返回值)和狮子老虎类(频率低 消化过程慢 返回值)。所以需要单独重写这两个类独有的属性和方法。
类中重写实现的接口中的方法:接口中的方法没有方法体,实现类中必须重写方法加上方法内容
格式:要求与父类方法/接口中方法一致,方法体可以修改,方法名与参数类型必须一致
作用:子类扩展父类方法内容 、子类对象以及子类中在有重写方法的时候先调用重写的方法
接口:
关键字:interface
格式:interface 接口名{ }
内容:
属性:都是默认由 public static final 修饰
方法:都是抽象方法 默认由 public abstract 修饰
抽象方法的特点是: 没有方法体
static : 静态的 特点: 唯一
修饰属性: 静态属性 可以由类名直接调用了 并且在内存中只会存在一份
修饰方法: 静态方法 可以由类名直接调用了 方法中不能使用本类中成员属性
final: 最终的 特点: 不可变 不能被修改
修饰属性: 常量 一般常量的命名规范是全部大写 不能修改值
修饰方法: 不能被重写
类与接口的区别:
类: 抽象属性
属性: 抽象
方法: 不抽象的 具体的逻辑写定了
接口: 抽象行为
属性: 具体 静态的常量
方法: 抽象 没有具体实现内容 接口也可以看成一个类别,这个类别主要以行为/功能分类 也相当于是一个父类 继承类型
接口的使用方式:
1:创建一个类 实现这个接口
2:重写接口中的抽象方法为具体方法分号改为大括号
3:方法中写上这个行为的具体实现
利用接口继承的方式,编写一个门锁开门关门的实例:
package doorlock;
interface Lock{
void openLock();
void closeLock();
}
class Door{
Lock lock = null;
void addLock(Lock lock) {
this.lock = lock;
}
void openDoor(){
if(lock == null){
System.out.println ("Lock对象为空 请先安装锁~");
return;
}
lock.openLock ();
}
void closeDoor(){
if(lock == null){
System.out.println ("Lock对象为空 请先安装锁~");
return;
}
lock.closeLock ();
}
}
// ----------以上代码不能改动------------------
class FaceIDLock implements Lock{
public void openLock(){
System.out.println ("人脸识别开锁");
}
public void closeLock(){
System.out.println ("人脸识别关锁");
}
}
class KeyLock implements Lock{
public void openLock(){
System.out.println ("钥匙开锁");
}
public void closeLock(){
System.out.println ("钥匙关锁");
}
}
class Manage{
public static void main(String[] args){
Door door = new Door ();
// 配锁
FaceIDLock faceIDLock = new FaceIDLock ();
door.addLock(faceIDLock);
//使用功能
door.openDoor ();
door.closeDoor ();
KeyLock keyLock = new KeyLock ();
door.addLock(keyLock);
door.openDoor ();
door.closeDoor ();
}
}