object+多态+抽象类+接口

一.object

定义:object是java所有类的父类,Java中所有类都直接或间接的继承object,Java是单继承机制·,·一个类如果没有显示继承其他类时,就默认他继承object类

常用方法:

1.toString():输出一个对象时会默认调用当前对象的toSteing()方法,打印方法的返回值

2.equals():比较相等,如果相等返回true,否则就返回false

equals与==的区别:

equals:是比较引用数据类型-->地址

==:是比较基本数据类型-->数值

注意:object中的equals的方法比较的是对象的地址

但equals方法可以重写

二.多态

定义:一个事物的多种形态|多种表现形式

表想形式:父亲类型 变量名=new 子类型();

多态的前提条件:

1.继承关系

2.有方法的重写

3.父类变量指向子类对象

多态的特点:多态调用时,会调用子类的重写方法,如果没有重写方法会调用父类中的内容

多态调用的特点:

成员变量:编译运行看父类|左边|类型

成员方法:编译看父类|左边|类型 ,运行看子类|右边|对象(儿子以父亲的身份做父亲的事)

public class Demo02 {
    public static void main(String[] args) {
        Fu fu=new Zi();//多态
        System.out.println(fu.name);
        fu.test();//多态调用,输出父类的内容
    }
}
​
class Fu{
    String name="zhangsan";
    void test(){
        System.out.println("Fu");
    }
}
​
class Zi extends Fu{
    String name="zhangsanfeng";
    void test(){
        System.out.println("Zi");
    }
}
​

 

三.类型转换

向上转型(自动转向提升):父类类型>子类类型

父类类型 变量名=new 子类类型();

向下转型(强制类型转换):

子类类型(小范围类型) 变量名=(小范围类型|子类类型)父类变量名|大范围类型变量名

注意:

1.父类的引用只能调用父类中有的内容,对子类新增内容不可见

2.使用父类的引用多态形式调用时候,不能够调用子类新增的内容,想要调用,需要向下转型

ClassCastException:类型转换异常

instanceof:运行运算符

作用:向下转型容易出现类型转换异常,instanceof可以防止这种异常的出现

定义:可以判断前面的的变量是否是后面类型的对象如果是返回true,如果不是返回false

public class Demo01 {
    public static void main(String[] args) {
        //向上转型-->多态
        KongZiDie k=new KongZi();
        k.teach();
        //向下转型: 想要调用子类独有内容
        if(k instanceof KongZi){
            KongZi kk=(KongZi)k;
            kk.play();
        }else if(k instanceof Brother){
            Brother kk=(Brother)k;
            kk.play();
        }
        
    }
}
class KongZiDie{
    void teach(){
        System.out.println("做生意....");
    }
}
class KongZi extends KongZiDie{
    void teach(){
        System.out.println("讲论语....");
    }
    void play(){
        System.out.println("玩王者..");
    }
}
class Brother extends KongZiDie{
    void play(){
        System.out.println("玩吃鸡..");
    }
}
​
​

 

四.抽象类

定义:被abstract修饰的类就是抽象类,被abstract修饰的方法就是抽象方法

注意:

1.没有方法体,没有{}

2.抽象方法必须存在抽象类中

3.抽象类中可以存在抽象方法,可以存在具体方法(有方法体的方法,但很少)

4.抽象类不能实体化(不能创建对象)

5.抽象类中的方法不需重写

抽象类如何使用:

具体子类:重写所有父类中的抽象方法+按需新增

抽象子类:按需重写父类中的抽象方法+按需新增

五.接口

含义:被interface定义的就是接口(一个特殊的抽象类)

作用:功能的集合(抽象方法的集合)

优点:

1.接口可以多实现,而类只能单继承(只要满足接口的条件就能使用里面的内容)

2. 要按照规范定义

解耦:降低耦合度,提高代码的复用性

在jbk1.7以前接口只存在:

1.公共的静态常量 public static final(默认),但修饰符可以省略

2.公共的抽象方法:public abstract(默认),但可以省略

特点:

1.接口不能实例化(因为接口中有抽象方法)

2.类去实现接口,要使用implements关键字

3.一个类可以有多个接口,但只能继承一个父类

4.一个类既可以实现多个接口也可以继承父类,但要先继承后实现

5.接口和类之间只能类实现接口

6.接口和接口之间,不能实现只能继承,接口可以继承多个接口,而且拥有每个接口中的功能

接口的使用:

1.具体的实现类使用:重写所有的抽象方法+按需新增

2.抽象的实现类:按需重写+按需新增

父类和父接口的区别:

父类:子类继承父类可以直接调用父类的内容

父接口:实现类,只要实现这个接口就能使用里面的功能

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值