7.7总结

接着上回没有说完的,有关Java面向对象的操作方法还差一点内容,现在给他补全
十:方法的重写

                10.1 重写:子类对父类中提供的方法进行重新定义,子类和父类中的声明完全一致

                也就是方法的覆盖

//创建一个名为Liyuan的类并为他赋值

public class Liyuan {

    public void makecountry()
    {
        System.out.println("李渊想建立一个自己的国家");
    }
}

        

//再创建一个名为Lishimin的类,在其中进行方法的重构
public class Lishimin extends Liyuan{

    public void makecountry(){
    //半盖
         super.makecountry();//super可以调用父类中被重写的方法
         System.out.println("李世民也想建立自己的国家");
     }
    public static void main(String[] args) {
        Lishimin l = new Lishimin();
        l.makecountry();
    }
}

运行结果:

十一:多态

        11.1 定义:同一个对象拥有多种形态

        11.2 作用:把不同的数据类型进行统一

//people

public class people {
    public void feed(animal ani) {
        ani.eat();
    }
}

定义动物执行吃的动作 

//cat

public class cat extends animal {
    public void eat()
    {
        System.out.println("cat eat fish");
    }

    public void catchmouse()
    {
        System.out.println("cat catch mouse");
    }
}

定义一个猫吃鱼的类 

//dog
public class dog extends animal{
    public void eat(){
        System.out.println("dog eat bone");
    }
}

定义一个狗吃骨头的类 

//daxiang

public class daxiang extends animal {

    public void eat()
    {
        System.out.println("dx eat banada");
    }
}

定义一个大象吃香蕉的类 

 让他们全部都继承animal的父类执行吃的动作,dog,cat和daxiang都属于animal,这就是物品的多态

public class cleant {
    public static void main(String[] args) {
        animal ani1 = new cat();
        animal ani2 = new dog();
        animal ani3 = new daxiang();

        people p = new people();

        p.feed(ani1);
        p.feed(ani2);
        p.feed(ani3);

        cat cc=(cat)ani1;
        cc.catchmouse();//向下转型
    }
}

 运行结果:

注意:

        1.把子类的对象赋值给父类的变量 -> 向上转型

        缺点:屏蔽掉子类中持有的方法

        2.把父类的变量转化给子类  -> 向下转型

        向下转型存在风险所以必须使用强制类型转换

        (转换之后的数据类型的变量)

十二:final关键字

        12.1 final修饰的变量不可以被改变(自认为大概类似于c中的const)

可以发现在运行时编译器报错无法分配值。 

        12.2 被final修饰的方法不能被改变

同样被修饰的方法也不能被继承

        12.3 被final修饰的类不可被改编 

十三:抽象        

        13.1    现实中不存在的东西,在Java中只声明不实现

        抽象方法:使用abstract来修饰,不可以用方法体,直接用分号结束。

        抽象类:如果一个类中抽象方法,这个类必须是一个抽象类

//animal

public abstract class animal {//类中如果有抽象方法,那么这个类必须是一个抽象类
    //abstract修饰方法,这个方法就是一个抽象方法,抽象方法没有方法体,直接 ;  结束
    public abstract void eat();

    public abstract void dong();

}
//cat

public class cat extends animal{
    public void eat(){
        System.out.println("猫吃鱼");
    }
    public void dong(){
        System.out.println("猫懒洋洋的动");
    }
}
//client

public class client {
    public static void main(String[] args) {
        cat c=new cat();
        c.eat();
    }
}

 运行结果:

        特点:

                1.抽象类不可以创建对象

                2.抽象类的子类,必须重写父类中的抽象方法,否则,子类也必须是抽象类

             通过抽象类可以强制的要求子类中必须有哪些方法

                抽象类里可以有正常的方法

十四:接口

       14.1 接口实际上是一种特殊的抽象类

       14.2 接口中的所有方法都是抽象方法

        14.3 接口使用interface来声明

//创建一个接口valueable

/**
 * 能继承接口的只能是接口
 * 接口和类只能是实现关系
 */

public interface valueble {//接口使用interface声明,不再属于类。
    //接口中所有方法都是抽象方法可以直接省略掉abstract
    //接口中的所有内容都是公开的,公共的。
    void getMoney();
}
//接口protectable

public interface protectable {
    public void cang();
}

 

//animal

public class animal {
    public void eat()
    {
        System.out.println("eat");
    }
}
//panda

public class panda extends animal implements valueble,protectable {
    @Override
    public void eat() {
        System.out.println("熊猫吃竹子");
    }

    @Override
    public void cang() {
        System.out.println("藏在山里");
    }

    @Override
    public void getMoney() {
        System.out.println("可以换钱");
    }
}

 

//Test

public class Test {
    public static void main(String[] args) {
        panda panda = new panda();

        panda.eat();
        panda.cang();
        panda.getMoney();
    }
}

运行结果:

 

        类只能单项继承,接口实现多实现

                

        接口同样具有多态性

可以继承animals但是其他就报错

//Test

public class Test {
    public static void main(String[] args) {
        animal panda = new panda();

        panda.eat();
//        panda.cang();
//        panda.getMoney();
    }
}

 

        接口可以把很多不相关的关联一起

      特点:

        1.接口中所有方法都是抽象方法

        2.接口中所有变量都是静态变量

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值