面向对象(二)抽象类,接口,多态

super和this的含义及用法

super:代表父类的存储空间,父类的引用。

this:表示当前对象的引用,也就是说谁调用就指谁。

用法:

this.成员变量()

super.成员变量()

this.成员方法名()

super.成员方法名()

/**
 * @author ZhangXiaoDie  2022/11/20  15:19
 * @version 1.0
 */
public class Demo {
    public void run(){
        System.out.println("人会跑");
    }
}




public class Demo2 extends Demo{
    public void run(){
        System.out.println("女孩会跑");
    }
    public void test(){
        this.run();//调用本类的方法
        super.run();//调用父类的方法
    }
}

抽象类

抽象类:没有方法体的方法,包含抽象方法的方法

抽象方法

要使用abstract关键字修饰方法,抽象方法只包含一个方法名没有方法体。

意义

1,能够对子类进行约束,子类必须实现父类的抽象方法,或者子类声明为抽象类。

2,抽象类通过定义抽象方法就实现了一种规范,要求它的子类必须具备某种功能,具体如何实现以子类的具体实现为准。

接口

接口使用interface关键字,接口的使用,不能创建对象就可以实现类似于被继承,一个实现接口的类需要实现接口中所有的抽象方法,创建该类的对象,就可以调用该方法了,否者他必须是一个抽象类

定义格式

public  interface  接口名称{

//抽象方法:使用关键字 abstrsct;没有方法体;可以省略;该方法供子类实现使用。

public interface   InterfaceName{

public abstract  void   syudy();

}

//默认方法:使用default修饰;不可省略;供子类调用或者子类重写。

//静态方法:使用static修饰,接口直接调用

public interface   InterfaceName{

public defaule  void   syudy(){

//执行语句

          }

public static  void   syudy2(){

//执行语句

           }

}

//私有方法:使用private修饰;供接口中的默认方法或者静态方法调用。

public interface   InterfaceName{

private void   syudy(){

//执行语句

          }

}

}

多态

多态是面向对象的一个重要特征之一,指同一个实体同时具有多种形式,即同一个对象,在不同时刻,代表的对象不一样,指的是对象的多种形态。

多态的前提:

1,发生在有继承或者实现接口情况下

2,在子类中对方法进行了重写

3,父类引用指向子类对象 父类类型  变量名=new 子类对象()

多态的好处

1,多态可以让我们不用关心某个对象到底具有是什么类型,就可以使用该对象的某些方法。

2,提高了程序的可扩展性和可维护性

多态的本质

子类对象向上转型为父类引用


       
/*多态的前提:继承+重写*/
//创建父类
class Animal{
    //创建父类的普通方法
    public void eat(){
        System.out.println("动物");
    }
}
//创建子类1
class Cat extends Animal{
    //添加重写的方法
    public void eat(){
        System.out.println("小猫吃东西");
    }
    //添加子类的特有功能
    public void jump(){
        System.out.println("小猫跳舞");
    }
}
//创建子类2
class Dog extends Animal{
    //添加重写的方法
    @Override
    public void eat(){
        System.out.println("小狗吃东西");
    }
    //添加子类的特有功能
    public void run(){
        System.out.println("小狗跑");
    }
}

public class Test {
    public static void main(String[] args) {
        //创建对象
        Animal a = new Animal();
        Cat c = new Cat();
        Dog d = new Dog();
        a.eat();//调用的是父类自己的功能
        c.eat();//调用的是子类重写后的功能
        d.eat();//调用的是子类重写后的功能
        /*父类对象不可以使用子类的特有功能*/
        //a.jump();//报错,Animal类里并没有这个方法
        //a.run();//报错,Animal类里并没有这个方法
        c.jump();//子类可以调用自己的功能
        d.run();//子类可以调用自己的功能
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值