import是用来导入其他包中的类
在这里tect是一个包,bao又是一个包,导入方式是
import +包名+类名。
引用权限
private 同一个包同一个类才可以用
default(默认不写)同包就行
protect 不同包的子类可以用
public。 随意用
如果两个文件夹有同一个名字的文件这时候导入两个包后
如import java.util.*;
import java.sql.*;只可以指定着写如java.util.Date date=new java.uti.Date();
包名最好小写
继承和多态
继承,如果两个类有相同的共性则抽取共性形成父类,具体细致的类叫子类,如同一个动物类,动物具有吃,玩等特性,而具体到猫和狗的时候,吃就要变为吃狗粮或者吃猫粮,继承的目的是进行代码的复用来使代码更简洁,而调用的super是为了初始化父类的内部成员 ,子类同时可以方法重载(和父类方法用一个名字)
eat方法的复用
多态的体现:在代码运行,当传递不同类对象会调用对应类中的方法。
多态(条件)
1.必须在继承体系下面
2.子类必须对父类方法进行重写
3.通过父类的引用调用重写的方式。
注意
1.被private修饰的方法不能重写。
2.被static修饰的方法不能重写。
3.子类的访问限定符一定要大于父类的访问修饰符。
4.被final修饰的方法不可被重写。
5.构造方法不可以重写。
调用方式是super.父类成员名(super是在子类的构造函数里面调用父类的构造函数,因为子类构造函数中默认存在super()表示父类的其他含参构造,子类必须调用父类的构造函数,不管无参还是含参,选一个即可,子类不能出现父类名字的构造的方法)
super和this都是java关键字,都只能在非静态中使用,不可同时存在。
(注意 super必须第一行,this()和super不可同时连用,)
子类实例化一个对象之后,父类来引用这个对象(小范围到大范围的叫做向上转型),
此时父类MyInteger只可调用自己的方法而不能调用子类的方法,当他调用自己的方法时,我们会看到结果还是子类的方法呈现,而这就叫做运行时绑定,因为此时发生了重写
静态绑定就是根据用户传递的实参类型而确定具体调用哪个方法(代表方法重载)。
向上转型的使用时机,下图是传递参数时,我们正常应该是使用夫类对象,但是我们传递了他的子类a,来发生向上转型
3.返回值
返回的子类,可以用父类接收,接收然后,可以调用父类的方法,但他还是有运行时绑定,也就是输出是子类的eat。
向下转型
下图就展示了向下转型,将父类转化为子类,(不是很安全,使用较少)
如果这个时候,向下转型就不可以了,因为转型,你所实例化的对象,和你强制转换的对象不同。
那么解决向下转型的方法就是这个,判断他的实例化对象什么东西,如果是mu就调用强制类型转化成mu,如果是ma就强制类型转换成ma。判断是用if(父类对象名字 instanceof 另一个类(ma))来判断具体哪个类,调用哪个方法