我的Java学习笔记-07接口、多态与继承

143 阅读3分钟

类的继承 基于某个父类进行扩展,得到一个子类。子类可以继承父类的属性和方法,也可以增加父类所不具备的属性和方法,甚至可以重写中的某些方法

public class Test{//定义父类 public Test(){//父类构造方法 //... } public void Test1(){//父类成员方法 //... } } class TestSub extends Test{//子类继承父类 public TestSub() { super();//子类调用父类构造方法 super.Test1();//子类调用父类成员方法 } public void Test1(){//重写父类方法 //... } } 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 注:在实例化子类对象时,会在子类的构造方法中自动先调用父类的无参构造方法;权限修饰符只能由小改大

Object类 所有类都直接或者间接继承了‘java.lang.Object’类,Object类是所有类的父类,所以任何类都可以重写Object类中的方法

getClass()方法

getClass().getName();//getClass()返回执行时Class的实例,getName()返回执行时Class的名称,获取‘当前’运行的类相关信息 toString()方法 注:将一个‘对象’返回为字符串形式,它会返回一个String实例

equals()方法 注:equals()方法比较的是两个对象的实际内容,‘==’比较的是两个对象的引用

对象类型转换 向上转型 将子类的一个实例看成父类的一个实例 把子类对象赋值给父类类型的变量 即将具体类转化为抽象类

向下转型 将抽象类转化具体类

使用instanceod操作符判断对象类型 if (a instanceof B){//a是父类对象名,B为子类类名 //...//判断a父类对象是否是子类的一个实例,返回值为boolean }else{ //... } 1 2 3 4 注:使用instanceof判断向下转型可以保证安全

方法的重载 方法名相同而形参不同

public class number { public void aa(char a,char b) {} public void aa(int a,int b) {} public int aa(int a) { return a; } } 1 2 3 4 5 6 注:只要参数类型,个数,出现顺序不同就可以保证

多态 可以在父类定义一个方法,让子类继承,然后再父类中做一些限定,就可以根据子类的不同在同样的方法中产生不同效果

抽象类与接口 抽象类

public abstractclass Test{//定义抽象类 abstract void subTest();////定义抽象方法 } 1 2 注:抽象类不可以实例化对象;抽象类如果不继承将没有意义;只要某个类中包含由一个抽象方法,则该类必须为抽象类;继承了抽象类的子类‘必须’要将抽象类中的方法进行覆盖

接口 接口看作是抽象类的延申,接口中的方法都没有方法体 由于Java不允许继承两个父类,所以这就是接口存在意义,一个子类可以同时继承一个父类和多个接口

interface Test{//定义接口 void aa();//定义空方法体的方法 } class bb extends number implements Test{//继承父类以及实现接口 public void aa() { //重写接口中的方法,‘必须重写’,因为接口可以看成抽象类 } } public class number {//定义父类 public static void main(String[] args){ } }

BTW: 字节跳动飞书业务内推专场开始啦

字节跳动飞书业务内推咯~ 在线办公,未来可期! 北京、杭州、武汉、广州、深圳、上海,六大城市等你来投~ 感兴趣的朋友可以私我咨询&内推,也可以通过链接直接投递! 海量hc,极速响应,快来和我成为同事吧~

www.feishu.cn/hr/feishu_s…