一个类只能单一继承一个类,但可同时实现多个接口
package charactor;
//同时能进行物理和魔法伤害的英雄
public class ADAPHero extends Hero implements AD,AP{
@Override
public void magicAttack() {
System.out.println("进行魔法攻击");
}
@Override
public void physicAttack() {
System.out.println("进行物理攻击");
}
}
#对象转型
# #引用和对象
对象即可以看做是一个实例,而引用是指向对象的一个标识,例子:
Person person;
person = new Person("张三");
“操纵的标识符实际是指向一个对象的引用”,也就是说person是一个引用,是指向一个可以指向Person类的对象的引用。
# #转换规则1、非继承关系的类不可转换
2、子类可转换为父类对象
3、父类转成子类需加强制类型转换
1、父类的引用指向子类对象
2、调用的方法在子类中有重写
1、所有的类默认继承Object类
2、Object类常用的具备toString()方法,其意思是返回当前对象的字符串表达。
1、final关键字修饰类不能被继承
2、final关键字修饰引用只能指向一次对象
3、final关键字修饰常量只能赋值一次
4、final关键字修饰方法不能被重写
1、抽象方法
当一个方法被abstract修饰时,该方法为抽象方法
2、抽象类
当一个类有抽象方法则必须声明为抽象类
3、若抽象类中无抽象方法则单纯不能被实例化
4、子类继承抽象类,需重写抽象方法,否则必须为抽象类
1、声明
声明接口类时采用关键字interface,并且内部只能声明抽象方法(JDK8新特性中可声明默认方法)与public、静态、final的属性。
(默认方法)关键字:default、且有方法体
package charactor;
public interface AD {
//物理伤害
public void physicAttack();
}
package charactor;
public interface AD {
//物理伤害
public void physicAttack();
}
2、实现
实现接口时,采用implements关键字,且实现接口时必须全部实现接口中的抽象方法,否则该类为抽象类。
package charactor;
public class ADHero extends Hero implements AD{
@Override
public void physicAttack() {
System.out.println("进行物理攻击");
}
}
# #区别
1、抽象类可以有抽象方法与非抽象方法,且属性可声明为各种类型,但是接口只能有抽象方法,属性必须声明为public、静态、final的属性。
2、一个类可以实现多个接口但是只能继承一个抽象类
继承抽象类与接口都必须重写(实现)其中所有抽象方法,否则为抽象类。
#内部类与匿名类、本地类(带名字匿名类)1、内部类与方法属性同等声明
2、匿名类声明在方法中
3、非静态内部类,需先有对象再有类 :new 外部类().new 内部类()
4、静态内部类不需要对象,类直接调用外部类: new 外部类.静态内部类()



