类和对象
创建对象
Hero h = new Hero();
创建过程中JVM的对应处理,要继续补充
访问修饰符
(1)private 私有的
自身:是可以访问的
同包子类:不能继承
不同包子类:不能继承
同包类:不能访问
其他包类:不能访问
(2)package/friendly/default 不写
(3)protected 受保护的
(4)public 公共的
总结
- 属性通常使用private封装起来
- 方法一般使用public用于被调用
- 会被子类继承的方法,通常使用protected
- package用的不多
类属性
当一个属性被static修饰的时候,就叫做类属性,又叫做静态属性。如果一个属性声明成类属性,那么所有的对象,都共享这么一个值 。
例如:给英雄设置一个类属性叫做“版权" (copyright), 无论有多少个具体的英雄,所有的英雄的版权都属于 Riot Games公司。
如果一个属性,每个英雄都不一样,比如name,这样的属性就应该设计为对象属性,因为它是跟着对象走的,每个对象的name都是不同的。
如果一个属性,所有的英雄都共享,都是一样的,那么就应该设计为类属性。比如血量上限,所有的英雄的血量上限都是 9999,不会因为英雄不同,而取不同的值。 这样的属性,就适合设计为类属性
类方法
又叫做静态方法,访问一个对象方法,必须建立在有一个对象的前提的基础上。而访问类方法,不需要对象的存在,直接就访问。
例如:常用的main方法,不需要有对象,可以直接使用,属于静态方法
如果方法里访问了对象属性,那么这个方法,就必须设计为对象方法。如果一个方法,没有调用任何对象属性,那么就可以考虑设计为类方法。
接口与继承
对象转型
(1)子类转父类(一定可以)
Hero h = new ADHero();
(2)父类转子类(要进行强转)
ADHero ad = new Hero();
重写
子类可以继承父类的对象方法,在继承后,重复提供该方法,就叫做方法的重写,又叫覆盖 override
多态
- 操作符的多态 :+ 可以作为算数运算,也可以作为字符串连接
- 类的多态 :父类引用指向子类对象(对象转型)
要实现类的多态,需要如下条件:
3. 父类(接口)引用指向子类对象
4. 调用的方法有重写
抽象类
在类中声明一个方法,这个方法没有实现体,是一个“空”方法。当一个类有抽象方法的时候,该类必须被声明为抽象类
抽象类和接口的区别
- 子类只能继承一个抽象类,不能继承多个;子类可以实现多个接口
- 抽象类可以定义public,protected,package,private,静态和非静态属性,final和非final属性;但是接口中声明的属性,只能是public、静态、final的