静态变量、静态方法、静态块;内存管理;重写的的规则:两同两小一大;实例变量和静态变量的区别"/>
面向对象day04(方法的重写;重载和重写的区别;package和import;访问权限修饰符;static:静态变量、静态方法、静态块;内存管理;重写的的规则:两同两小一大;实例变量和静态变量的区别
一、方法的重写(override/overriding):重新写、覆盖
1)重写:发生在父子类中,方法名相同,参数列表相同(方法签名完全相同)
2)重写方法被调用时,看对象的类型(若对象的类型是超类,则执行超类中的方法,若对象的类型是子类,则执行子类中的方法)。new 出来的是对象,即new谁就看谁
我继承了一个中餐馆
class Aoo{void do(){做中餐}
}
A:我还是想做中餐------------不需要重写class Boo extends Aoo{}
B:我想改做西餐--------------需要重写class Boo extends Aoo{void do(){做西餐}}
C:我想在中餐基础之上加西餐-----需要重写(先super中餐,再加入西餐)class Boo extends Aoo{void do(){super.do();做西餐}}
子类觉得超类的行为不够好的时候,可以重写。重写对应的是父类中的方法
重写只要被调用,铁定看对象的类型,这是一种多态的表现
super.方法名()调用超类的方法,一般:在超类的方法基础之上进行重写的时候。(是觉得超类的方法不足,额外增加别的功能)
二、重写与重载的区别
- 重写:发生在父子类中,方法名相同,参数列表相同。当派生类觉得超类的的方法不好
(一般用在派生类修改超类的方法) - 重载:发生在同一个类中,方法名相同,参数列表不同.
(是完全不同的方法,只是方法名相同而已)
三、package 和 import
package:声明包
- 作用:避免类的命名冲突(如果以类名为唯一标识的话,特别容易出现命名冲突)
- java规定:同包的类是不能同名,不同包的类是可以同名的
- 类的全称:包名.类名 包名常常有层次结构 例:a.Aoo
- 建议包名所有字母全部用小写,package声明包必须放在第一行
- 不同包进行访问的时候,可以写类名的全称也可以导入类import
- java可以同包继承也可以不同包继承
import:导入类
说明:导入包的位置位于包package的下一行
同包中的类可以直接进行访问,不同包中的类不能直接进行访问(跨包不能直接进行访问)
若想访问,比较繁琐的一个方法:写类的全称
1)建议:先 import导入类(类的全称),再访问类。
用哪个类就导入哪个类,不建议全部导入某个包的所有类import.java.,会影响性能:import java.util.
import java.util.Scanner
//java.util是包名
//Scanner是个类,这个类是在java.util这个包下的
//
java.util.Scanner scan = new java.util.Scanner(System.in);
- 调用的是有参的构造方法,System.
更多推荐
面向对象day04(方法的重写;重载和重写的区别;package和import;访问权限修饰符;static:静态变量、静态方法、静态块;内存管理;重写的的规则
发布评论