how2j.cn

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



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



步骤 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 图 —— 类之间的关系

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

解释UML-类图

解释UML-类图
步骤 3 :

解释UML-接口图

解释UML-接口图
步骤 4 :

解释UML-继承关系

带箭头的实线,表示 Spider,Cat, Fish都继承于Animal这个父类
解释UML-继承关系
步骤 5 :

解释UML-实现关系

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

练习-Animal类

Or  姿势不对,事倍功半! 点击查看做练习的正确姿势
1. 创建Animal类,它是所有动物的抽象父类。
2. 声明一个受保护的整数类型属性legs,它记录动物的腿的数目。
3. 定义一个受保护的构造器,用来初始化legs属性。
4. 声明抽象方法eat。
5. 声明具体方法walk来打印动物是如何行走的(包括腿的数目)。
步骤 7 :

答案-Animal类

在查看答案前,尽量先自己完成,碰到问题再来查看答案,收获会更多
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类

Or  姿势不对,事倍功半! 点击查看做练习的正确姿势
1. Spider继承Animal类。
2. 定义默认构造器,它调用父类构造器来指明所有蜘蛛都是8条腿。
3. 实现eat方法
步骤 9 :

答案-Spider类

在查看答案前,尽量先自己完成,碰到问题再来查看答案,收获会更多
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接口

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

答案-Pet接口

在查看答案前,尽量先自己完成,碰到问题再来查看答案,收获会更多
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类

Or  姿势不对,事倍功半! 点击查看做练习的正确姿势
1. 该类必须包含String属性来存宠物的名字。
2. 定义一个构造器,它使用String参数指定猫的名字;该构造器必须调用超类构造器来指明所有的猫都是四条腿。
3. 另定义一个无参的构造器。该构造器调用前一个构造器(用this关键字)并传递一个空字符串作为参数
4. 实现Pet接口方法。
5. 实现eat方法。
步骤 13 :

答案-Cat类

在查看答案前,尽量先自己完成,碰到问题再来查看答案,收获会更多
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类

Or  姿势不对,事倍功半! 点击查看做练习的正确姿势
1. 创建Fish类,它继承Animal类
2. 重写Animal的walk方法以表明鱼不能走且没有腿。
3. 实现Pet接口
4. 无参构造方法
5. 提供一个private 的name属性
步骤 15 :

答案-Fish类

在查看答案前,尽量先自己完成,碰到问题再来查看答案,收获会更多
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公众号,关注后实时获知布最新的教程和优惠活动,谢谢。


问答区域    
2018-05-29 关于实现接口的类中属性的设置
llittle
实现了接口pet 的那个类就需要定义pet接口中方法中传递的参数作为属性吗?




3 个答案

markI 答案时间:2018-06-10
提交的答案不能修改吗?

markI 答案时间:2018-06-10
南哥 答案时间:2018-06-03




答案 或者 代码至少填写一项, 如果是自己有问题,请重新提问,否则站长有可能看不到




2018-05-06 练习
小原



写了五个
public abstract class Animal {
    protected int legs;
    public Animal(){}
    protected Animal(int legs){
    this.legs = legs;
    }
    public void walk(){
        System.out.println(legs+"只脚走路");
    }
    public abstract void eat();

}

public class Spider extends Animal{
    public Spider(){
    super(8);
    }
    public void eat(){
        System.out.println("蜘蛛eat方法");
    }
}

public class Cat extends Animal implements Pet{
    String name;
    public Cat(String name){
    super(4);
    }
    public Cat(){
        this("");
    }
    public String getName(){
        return name;
    }
    public void setName(String name){
    this.name = name;
    }
    public void play(){
        System.out.println("猫玩的方法");
    }
    public void eat(){
        System.out.println("猫吃的方法");
    }

}

public class Fish extends Animal implements Pet{
    private String name;
    public Fish(){}
    public String getName(){
        return name;
    }
    public void setName(String name){
    this.name = name;
    }
    public void play(){
        System.out.println("鱼玩的方法");
    }
    public void walk(){
        System.out.println("鱼不能走且没有腿");
    }
    public void eat(){
        System.out.println("鱼吃的方法");
    }
}

public interface Pet {
    public String getName();
    public void setName(String name);
    public void play();
}

public class Main {
    public static void main(String[] args) {
    Spider p = new Spider();
        p.eat();
    p.walk();

    Cat c = new Cat();
    c.setName("猫");
    c.eat();
    c.play();
    c.walk();
    Fish f = new Fish();
    f.setName("鱼");
    f.eat();
    f.play();
    f.walk();
    }
}

							






答案 或者 代码至少填写一项, 如果是自己有问题,请重新提问,否则站长有可能看不到





2018-03-28 报错了。。。
2018-01-29 Cat 中关于this.name的问题
2018-01-29 Cat 中关于this.name的问题
2017-11-23 求练习题答案
2017-11-10 super(8);和super.legs=8:有区别吗????
2017-09-08 super和this是不是不能同时使用啊?
2017-08-21 这个综合练习主要表达什么意思呢
2017-08-18 Spider 那個函數裏爲什麽沒有形參?
2017-03-26 this("") 的具体意义
2017-01-18 Fish和Cat的get方法里
2016-12-31 错别字
2016-08-20 错别字
2016-08-01 UML 使用的是什么软件
2016-06-05 怎么没有输出
2016-06-03 fish的getName里的返回为什么要加this




提问之前请登陆
关于 JAVA 基础-接口与继承-综合练习 的提问

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

上传截图