面向对象,继承,多态
继承
主要核心就是子类继承父类,子类不能调用父类private的属性和方法,其它权限都可以。子类构造方法里必须先加载父类构造方法,默认加载父类无参构造,如果父类没有无参,则必须用super主动调用。另外子类构造函数里this和super不能同时放在第一行。
当new出个子类对象时,系统会自动new个父类对象,然后才有子类对象的操作
继承的核心思想
没有无缘无故的继承,继承一定是满足is a 的概念,一种逻辑,比喻狗是动物,泰迪是狗,泰迪是动物,这都是自下而上的概率,反之我们不能说动物是狗,动物是泰迪。
向上和向下转型
1.为什么要向上转型?
因为子类继承父类的话,可以有多个子类。然后如果在一个方法里我要调用子类的方法来实现操作,那么如果没有向上转型,对于每一个子类,我都要单独写一个方法来接受子类对象。此时就需要向上转型来提高程序效率,这时候只需要方法参数设置为父类对象,实际调用时把子类对象放进去用,这时候会更加方便快捷就能用到子类重写的方法了
2.为什么要向下转型?
没错,用向下转型首先的前提是先得先上转型才能用向下转型。什么情况会用到这呢?
当我向上转型时,对于子类的新写的方法,我不能直接调用,这是只需要向下转型就能调用子类这些新方法了
抽象类
什么是抽象类?
顾名思义,抽象类表示这个类很抽象,什么意思呢?比如一个人类,我觉得它是抽象的,因为我不能把它具体到哪国人,可以是中国人,日本人,所以可以定义它为抽象,然后子类则具体到哪国人。同理一个动物是抽象的,工具是抽象的。
抽象类的语法含义
抽象类,普通类有的,抽象类有,普通类没有的抽象类也有。如:抽象方法,定义抽象方法目的就是定义一个抽象概念让子类去重写它,所以抽象方法不需要函数声明,只需要函数定义。其次子类可以是抽象类也可以是普通类,如果是普通类基础,则自下而上的所有抽象类方法都要重写 //注意一个类只能继承一个抽象方法
抽象类要注意的事情
抽象类如是个抽象概念,所有没有对象,但是我想使用抽象类里的普通方法怎么办呢?
我可以向上转型来调用抽象类的普通方法
接口类
什么是接口?
接口常用联想到鼠标接口,键盘接口,那么它们有什么接口呢,USP。
所有接口你可以理解为是个非常抽象且具体的功能,它是一个实实在在的功能,如接口,听筒,屏幕,发动机。
如此我一个子类可以实现多个接口,来达到我想实现什么功能我就安装什么接口,这样子类就是一个杂糅的东西有好多功能。
当然我子类实现接口,必然要重写这些接口,接口是个抽象概率,我重写它我就使他变得立体话,成为我独一无二的东西
public interface USB {
public abstract void plugIn();
public abstract void work();
}
public class KeyBoard implements USB{
@Override
public void plugIn() {
System.out.println("键盘安装驱动中-");
}
@Override
public void work() {
System.out.println("键盘正常工作了");
}
}
public class Mouse implements USB{
public void plugIn(){
System.out.println("鼠标安装驱动中——");
}
public void work(){
System.out.println("鼠标正常工作了");
}
}
接口类语法含义
接口类里只有全局常量和接口类,其它都没有,所有我们可以省略static final 和public abstrack 这些前缀了