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-03-28 报错了。。。
大大大牛



站长,我的代码都跟你一样,就是报错,然后我一直ctrl+1也没用,求解答
public class Cat extends Animal implements Pet {
	private 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("猫在玩耍");

	}

	@Override
	public void eat() {
		System.out.println("");

	}

}

							


1 个答案

Ericcc 答案时间:2018-04-02
你的getname()方法是不是大小写弄错了




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





2018-01-29 Cat 中关于this.name的问题
拥抱明天



我的 cat 调用主类中的walk函数 this.name为什么找不到?
package text20180129;

public abstract class Animal {
  protected int legs;
  String name;
  protected Animal(){
	 legs=8; 
  }
  public abstract void eat();
  public void walk(Animal i){
	  System.out.println(i.name+"用"+i.legs+"条腿走路");
  }
//  public void getPlay(Pet p){
//	 p.play(name);
//  }
  
  
	public static void main(String[] args) {
		Animal tiger=new Animal(){
           
			
			public void eat() {
				System.out.println(this.name+"吃肉");
				
			}
			
		};
        tiger.name="老虎";
        tiger.eat();
        tiger.walk(tiger);
        Spider spider=new Spider();
        spider.eat();
        spider.walk(spider);
		
        Cat cat=new Cat("猫");
        System.out.println(cat.name);
        cat.eat();
        cat.walk(cat);
        cat.play(tiger.name);
        
	}

}
//
package text20180129;

public class Cat extends Animal implements Pet {
	String name;
	public Cat(String name){
	    this.name=name;
		this.legs=4;
	//	this.walk(this.legs);
		//System.out.println(this.name);
	}
	public Cat(){
		this("");
	}
	
	public void eat() {
	System.out.println(this.name+"吃鱼");
		
	}
	@Override
	public String getName() {
		return this.name;
	}
	@Override
	public void setName(String name) {
         
		this.name=name;
	}
	@Override
	public void play(String name) {
		System.out.println(name+"Playing"+this.name);
		
	}
	
    
}


							


2 个答案

拥抱明天 答案时间:2018-02-04
谢谢楼上 今天看到答案后修改成功

smallbird 答案时间:2018-02-03
我感觉是在Cat类里的Name属性隐藏了父类Animal类的Name属性 把Cat里的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群交流: 389538688
站长会在每个工作日早上尽量回答提问(如果有漏掉没有回答的,请进群提醒一下)
提问尽量提供完整的代码,环境描述,越是有利于问题的重现,您的问题越能更快得到解答。
对教程中代码有疑问,请提供是哪个步骤,哪一行有疑问,这样便于快速定位问题,提高问题得到解答的速度
站长是玻璃心,提问的时候请语气温柔些 kiss~
截止2017-5-19日累计提问 1638个,站长回答了 1546个
截止2017-8-15日累计提问 2788个,站长回答了 2544个

上传截图