JAVA学习笔记_No.05

Java继承和多态之综合练习

一、成员类型
在这里插入图片描述
二、抽象类

抽象类(abstract class):一种父类,作为模板使用,可根据其格式创建和修改新的类

  • 抽象类的方法:①带方法体的一般方法;②没有方法体的抽象方法
  • 抽象方法:①只需要声明,不需要实现;②用;结尾,不用{}结尾;③意味该方法必须被子类方法覆盖

三、Override
在这里插入图片描述
四、接口

接口(interface):类似于抽象类,不同于其数据成员都是静态的且必须初始化(数据常量) 可以声明抽象方法外,还可以定义静态方法和默认方法

/**
 * 按照动物、宠物、猫和蜘蛛的关系,通过编程实现各自的关系并声明自己的属性和方法。
 */
// 创建Animal类,它是所有动物的抽象父类
abstract class Animal{
     // 声明一个受保护的字符串类型属性type、legs,分别记录动物的种类和腿的数目
    protected String type;
    protected int legs;
    // 定义一个受保护的有参构造器,用来初始化type和legs属性
    protected Animal(String type,int legs){
        this.type=type;
        this.legs=legs;
    }
    // 声明抽象方法eat,无返回值
    public abstract void eat();
    // 声明具体方法walk来打印动物是如何行走的(包括腿的数目)
    public void walk(){
        System.out.println(type+"用 "+legs+" 条腿走路");
    }
}
// 定义蜘蛛类 Spider继承Animal类
class Spider extends Animal{
    // 定义默认构造器,它调用父类构造器来指明动物类别是spider,且所有蜘蛛都是8条腿。
    public Spider(){
        super("spider",8);
    }
    // 实现eat方法,输出:spider eating
    @Override
    public void eat(){
        System.out.println("spider eating");
    }
}
// 创建pet接口
interface Pet{
    // 提供setName(String name) 为该pet命名
    public void setName(String name);
     // 提供getName() 返回该宠物的名字,返回类型为String
    public String getName();
    // 提供 play()方法,无返回值
    public void  play();
}
// 定义公开的猫类 Cat 继承动物类并实现宠物接口
public class Cat extends Animal implements Pet{
    // 定义一个name属性来存宠物的名字
    private String name;
    // 定义一个有参构造器,它使用String参数指定猫的名字
    // 该构造器必须调用超类构造器来指明动物种类是cat,且所有的猫都是四条腿
    public Cat(String name){
        super("cat",4);
        this.name=name;
    }
    // 另定义一个无参的构造器。该构造器调用前一个构造器(用this关键字)并传递一个空字符串作为参数
    public Cat(){
        this("");
    }
    // 实现 Pet接口的方法
    // 设置猫的名称
    @Override
    public void setName(String name){
        this.name=name;
    }
    // 获取猫的名称
    @Override
    public String getName(){
        return name;
    }
    // 重写 Animal 类的play(),输出:Cat is playing
    public void play(){
        System.out.println("Cat is playing");
    }
    // 重写 Animal 类的eat(),输出:xx eating
    @Override
    public void eat(){
        System.out.println(name+" eating");
    }
}    

Demo

public class Demo {
    public static void main(String[] args) {
        Spider spider = new Spider();
        spider.walk();
        Cat cat = new Cat("Kitty");
        System.out.println("小猫的名字叫:"+cat.getName());
        cat.walk();
        cat.play();
        cat.eat();
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值