how2j.cn

本视频是解读性视频,所以希望您已经看过了本知识点的内容,并且编写了相应的代码之后,带着疑问来观看,这样收获才多。 不建议一开始就观看视频



13分20秒
本视频采用html5方式播放,如无法正常播放,请将浏览器升级至最新版本,推荐火狐,chrome,360浏览器。 如果装有迅雷,播放视频呈现直接下载状态,请调整 迅雷系统设置-基本设置-启动-监视全部浏览器 (去掉这个选项)。 chrome 的 视频下载插件会影响播放,如 IDM 等,请关闭或者切换其他浏览器



步骤 1 : UML 图 —— 类之间的关系   
步骤 2 : 解释UML-类图   
步骤 3 : 解释UML-接口图   
步骤 4 : 解释UML-继承关系   
步骤 5 : 解释UML-实现关系   
步骤 6 : 练习-Animal类   
步骤 7 : 答案-Animal类   
步骤 8 : 练习-Spider类   
步骤 9 : 答案-Spider类   
步骤 10 : 练习-Pet接口   
步骤 11 : 答案-Pet接口   
步骤 12 : 练习-Cat类   
步骤 13 : 答案-Cat类   
步骤 14 : 练习-Fish类   
步骤 15 : 答案-Fish类   

步骤 1 :

UML 图 —— 类之间的关系

edit
UML-Unified Module Language
统一建模语言,可以很方便的用于描述类的属性,方法,以及类和类之间的关系
UML 图 —— 类之间的关系
解释UML-类图
步骤 3 :

解释UML-接口图

edit
解释UML-接口图
步骤 4 :

解释UML-继承关系

edit
带箭头的实线,表示 Spider,Cat, Fish都继承于Animal这个父类.
注: 模糊是表示,此时不需要关注模糊的那部分内容。 请不要再发图片是模糊的纠正信息了,站长特意这么做的。。。
解释UML-继承关系
步骤 5 :

解释UML-实现关系

edit
表示 Fish实现了 Pet这个接口
解释UML-实现关系
步骤 6 :

练习-Animal类

edit  姿势不对,事倍功半! 点击查看做练习的正确姿势
1. 创建Animal类,它是所有动物的抽象父类。
2. 声明一个受保护的整数类型属性legs,它记录动物的腿的数目。
3. 定义一个受保护的构造器,用来初始化legs属性。
4. 声明抽象方法eat。
5. 声明具体方法walk来打印动物是如何行走的(包括腿的数目)。
在查看答案前,尽量先自己完成,碰到问题再来查看答案,收获会更多
在查看答案前,尽量先自己完成,碰到问题再来查看答案,收获会更多
在查看答案前,尽量先自己完成,碰到问题再来查看答案,收获会更多
查看本答案会花费3个积分,您目前总共有点积分。查看相同答案不会花费额外积分。 积分增加办法 或者一次性购买JAVA 基础总计0个答案 (总共需要0积分)
查看本答案会花费3个积分,您目前总共有点积分。查看相同答案不会花费额外积分。 积分增加办法 或者一次性购买JAVA 基础总计0个答案 (总共需要0积分)
账号未激活 账号未激活,功能受限。 请点击激活
public abstract class Animal { protected int legs; protected Animal(int legs){ this.legs = legs; } public abstract void eat(); public void walk(){ System.out.println("用 " + legs + " 条腿走路"); } }
public abstract class Animal {

	protected int legs;
	protected Animal(int legs){
		this.legs = legs;
	}
	public abstract void eat();
	public void walk(){
		System.out.println("用 " + legs +  " 条腿走路");
	}
}
步骤 8 :

练习-Spider类

edit  姿势不对,事倍功半! 点击查看做练习的正确姿势
1. Spider继承Animal类。
2. 定义默认构造器,它调用父类构造器来指明所有蜘蛛都是8条腿。
3. 实现eat方法
在查看答案前,尽量先自己完成,碰到问题再来查看答案,收获会更多
在查看答案前,尽量先自己完成,碰到问题再来查看答案,收获会更多
在查看答案前,尽量先自己完成,碰到问题再来查看答案,收获会更多
查看本答案会花费2个积分,您目前总共有点积分。查看相同答案不会花费额外积分。 积分增加办法 或者一次性购买JAVA 基础总计0个答案 (总共需要0积分)
查看本答案会花费2个积分,您目前总共有点积分。查看相同答案不会花费额外积分。 积分增加办法 或者一次性购买JAVA 基础总计0个答案 (总共需要0积分)
账号未激活 账号未激活,功能受限。 请点击激活
public class Spider extends Animal{ @Override public void eat() { System.out.println("spider eating"); } public Spider(){ super(8); } }
public class Spider extends Animal{

	@Override
	public void eat() {
		System.out.println("spider eating");
	}
	public Spider(){
		super(8);
	}
	
}
步骤 10 :

练习-Pet接口

edit  姿势不对,事倍功半! 点击查看做练习的正确姿势
根据UML类创建pet(宠物)接口
1. 提供getName() 返回该宠物的名字
2. 提供setName(String name) 为该宠物命名
3. 提供 play()方法
步骤 11 :

答案-Pet接口

edit
在查看答案前,尽量先自己完成,碰到问题再来查看答案,收获会更多
在查看答案前,尽量先自己完成,碰到问题再来查看答案,收获会更多
在查看答案前,尽量先自己完成,碰到问题再来查看答案,收获会更多
查看本答案会花费2个积分,您目前总共有点积分。查看相同答案不会花费额外积分。 积分增加办法 或者一次性购买JAVA 基础总计0个答案 (总共需要0积分)
查看本答案会花费2个积分,您目前总共有点积分。查看相同答案不会花费额外积分。 积分增加办法 或者一次性购买JAVA 基础总计0个答案 (总共需要0积分)
账号未激活 账号未激活,功能受限。 请点击激活
public interface Pet { public void setName(String name); public String getName(); public void play(); }
public interface Pet {

	public void setName(String name);
	public String getName();
	public void play();
}
步骤 12 :

练习-Cat类

edit  姿势不对,事倍功半! 点击查看做练习的正确姿势
1. 该类必须包含String属性来存宠物的名字。
2. 定义一个构造器,它使用String参数指定猫的名字;该构造器必须调用超类构造器来指明所有的猫都是四条腿。
3. 另定义一个无参的构造器。该构造器调用前一个构造器(用this关键字)并传递一个空字符串作为参数
4. 实现Pet接口方法。
5. 实现eat方法。
在查看答案前,尽量先自己完成,碰到问题再来查看答案,收获会更多
在查看答案前,尽量先自己完成,碰到问题再来查看答案,收获会更多
在查看答案前,尽量先自己完成,碰到问题再来查看答案,收获会更多
查看本答案会花费3个积分,您目前总共有点积分。查看相同答案不会花费额外积分。 积分增加办法 或者一次性购买JAVA 基础总计0个答案 (总共需要0积分)
查看本答案会花费3个积分,您目前总共有点积分。查看相同答案不会花费额外积分。 积分增加办法 或者一次性购买JAVA 基础总计0个答案 (总共需要0积分)
账号未激活 账号未激活,功能受限。 请点击激活
public class Cat extends Animal implements Pet{ private String name; public Cat(String name){ super(4); this.name = name; } public Cat(){ this(""); } @Override public void setName(String name) { this.name = name; } @Override public String getName() { // TODO Auto-generated method stub return name; } @Override public void play() { System.out.println("Cat is playing"); } @Override public void eat() { System.out.println("eating"); } }
步骤 14 :

练习-Fish类

edit  姿势不对,事倍功半! 点击查看做练习的正确姿势
1. 创建Fish类,它继承Animal类
2. 重写Animal的walk方法以表明鱼不能走且没有腿。
3. 实现Pet接口
4. 无参构造方法
5. 提供一个private 的name属性
在查看答案前,尽量先自己完成,碰到问题再来查看答案,收获会更多
在查看答案前,尽量先自己完成,碰到问题再来查看答案,收获会更多
在查看答案前,尽量先自己完成,碰到问题再来查看答案,收获会更多
查看本答案会花费3个积分,您目前总共有点积分。查看相同答案不会花费额外积分。 积分增加办法 或者一次性购买JAVA 基础总计0个答案 (总共需要0积分)
查看本答案会花费3个积分,您目前总共有点积分。查看相同答案不会花费额外积分。 积分增加办法 或者一次性购买JAVA 基础总计0个答案 (总共需要0积分)
账号未激活 账号未激活,功能受限。 请点击激活
public class Fish extends Animal implements Pet{ private String name; protected Fish() { super(0); } @Override public void eat() { System.out.println("Fish is eating"); } public void walk(){ System.out.println("swimming"); } @Override public void setName(String name) { // TODO Auto-generated method stub this.name = name; } @Override public String getName() { // TODO Auto-generated method stub return this.name; } @Override public void play() { // TODO Auto-generated method stub System.out.println("playing"); } }


HOW2J公众号,关注后实时获知最新的教程和优惠活动,谢谢。


问答区域    
2022-10-22 最终答案
zmzc




本节的综合练习
abstract class Animal{
    protected int legs;
    protected Animal(int legs){
        this.legs=legs;
    }
    abstract void eat();
    public void walk(){
        System.out.println(legs+"条腿走路");
    }
}
interface Pet{
    String getName();
    void setName(String name);
    void play();
}
class Spider extends Animal{

    public Spider(int legs) {
        super(legs);
    }
    @Override
    void eat() {

    }
}
class Cat extends Animal implements Pet{
    String name;
    public Cat(String name){
        super(4);
    }
    public Cat(){
        this("");
    }
    @Override
    void eat() {

    }

    @Override
    public String getName() {
        return name;
    }

    @Override
    public void setName(String name) {
        this.name=name;
    }

    @Override
    public void play() {

    }
}
class Fish extends Animal implements Pet{
    private String name;
    public Fish() {
        super(0);
    }
    public void walk(){
        System.out.println("无腿,不能走路");
    }
    @Override
    void eat() {

    }

    @Override
    public String getName() {
        return name;
    }

    @Override
    public void setName(String name) {
        this.name=name;
    }

    @Override
    public void play() {

    }
}
需要注意this("")是向Cat有参构造器传递一个空字符串作为参数





回答已经提交成功,正在审核。 请于 我的回答 处查看回答记录,谢谢
答案 或者 代码至少填写一项, 如果是自己有问题,请重新提问,否则站长有可能看不到





2022-01-20 Animal类里应该增加一个属性:name的,这是所有动物都有的属性。
dyf137

Animal类里应该增加一个属性:name的,这是所有动物都有的属性。




4 个答案

feiyu_666
答案时间:2022-04-01
分别建立Animal,Pet接口,Spider,Cat,Fish,Test0测试类。

hoolich
答案时间:2022-03-18
/*1. 创建Fish类,它继承Animal类 2. 重写Animal的walk方法以表明鱼不能走且没有腿。 3. 实现Pet接口 4. 无参构造方法 5. 提供一个private 的name属性*/ package charactor; public class Fish extends Animal implements Pet{ @Override public void walk() { System.out.println("鱼不能走且没有腿"); } public Fish(){ super(0); } @Override public void eat() { System.out.println("吃"); } private String name; public String getName(){ return this.name; } public void setName(String name){ this.name=name; } public void play(){ System.out.println("玩"); } }

hoolich
答案时间:2022-03-18
/*1. 该类必须包含String属性来存宠物的名字。 2. 定义一个构造器,它使用String参数指定猫的名字;该构造器必须调用超类构造器来指明所有的猫都是四条腿。 3. 另定义一个无参的构造器。该构造器调用前一个构造器(用this关键字)并传递一个空字符串作为参数 4. 实现Pet接口方法。 5. 实现eat方法。*/ package charactor; import kotlin.reflect.jvm.internal.impl.descriptors.Visibilities; public class Cat extends Animal implements Pet{ public String name; public Cat(String name){ super(4); this.name=name; } public Cat(){ this(""); } @Override public String getName() { return name; } @Override public void setName(String name) { this.name = name; } @Override public void play() { System.out.println("玩!"); } public void eat(){ System.out.println("吃"); } }

hoolich
答案时间:2022-03-17
/*1. 创建Animal类,它是所有动物的抽象父类。 2. 声明一个受保护的整数类型属性legs,它记录动物的腿的数目。 3. 定义一个受保护的构造器,用来初始化legs属性。 4. 声明抽象方法eat。 5. 声明具体方法walk来打印动物是如何行走的(包括腿的数目)。*/ package charactor; public abstract class Animal { protected int legs; protected Animal(int legs){ this.legs=legs; } public abstract void eat(); public void walk(){ System.out.println("用 " + legs + " 条腿走路"); } }



回答已经提交成功,正在审核。 请于 我的回答 处查看回答记录,谢谢
答案 或者 代码至少填写一项, 如果是自己有问题,请重新提问,否则站长有可能看不到




2021-10-12 fish类里protected
2021-08-21 题目一处看不明白,所以没写
2021-07-11 2021-7-11-PM-1-30


提问太多,页面渲染太慢,为了加快渲染速度,本页最多只显示几条提问。还有 50 条以前的提问,请 点击查看

提问之前请登陆
提问已经提交成功,正在审核。 请于 我的提问 处查看提问记录,谢谢
关于 JAVA 基础-接口与继承-综合练习 的提问

尽量提供截图代码异常信息,有助于分析和解决问题。 也可进本站QQ群交流: 578362961
提问尽量提供完整的代码,环境描述,越是有利于问题的重现,您的问题越能更快得到解答。
对教程中代码有疑问,请提供是哪个步骤,哪一行有疑问,这样便于快速定位问题,提高问题得到解答的速度
在已经存在的几千个提问里,有相当大的比例,是因为使用了和站长不同版本的开发环境导致的,比如 jdk, eclpise, idea, mysql,tomcat 等等软件的版本不一致。
请使用和站长一样的版本,可以节约自己大量的学习时间。 站长把教学中用的软件版本整理了,都统一放在了这里, 方便大家下载: https://how2j.cn/k/helloworld/helloworld-version/1718.html

上传截图