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公众号,关注后实时获知最新的教程和优惠活动,谢谢。


问答区域    
2023-08-16 大家看看哪里有问题吗
Domiko




大家看看哪里有问题吗
Animal类;
package practice;

public abstract class Animal {
	protected int legs;
	
	//构造方法
	protected Animal(int legs){
		this.legs = legs;
	}
	
	//抽象方法:eat()
	public abstract void eat();
	
	public void walk(){
		System.out.println("这个动物使用"+legs+"条腿进行行走");
	}
}

Spider类:
package practice;

public class Spider extends Animal {
	static int legs = 8;
	
	//构造方法
	public Spider(){
		super(legs);//构造方法中要传入的属性值必须为static,因为不是类属性的属性必须在实例化以后才有效,而类属性直接跟着类走,类定义了就分配了空间
	}
	
	@Override
	public void eat() {
		// TODO Auto-generated method stub
		System.out.println("蜘蛛吃了东西");
	}

}

Pet接口:
package practice;

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

Cat类:
package practice;

public class Cat extends Animal implements Pet {
	String catName;
	static int legs = 4;
	
	//有参构造器
	public Cat(String name){
		super(legs);
		this.catName = name;
	}
	
	//无参构造器
	public Cat(){
		this(null);
	}
	
	@Override
	public String getName() {
		// TODO Auto-generated method stub
		return this.catName;
	}

	@Override
	public void setName(String name) {
		// TODO Auto-generated method stub
		this.catName = name;
	}

	@Override
	public void play() {
		// TODO Auto-generated method stub
		System.out.println("这只名叫"+catName+"的猫猫在玩耍");
	}

	@Override
	public void eat() {
		// TODO Auto-generated method stub
		System.out.println("这只名叫"+catName+"的猫进食了");
	}

}

Fish类:
package practice;

public class Fish extends Animal implements Pet {
	static int legs = 0;
	private String fishName;
	
	//构造方法
	public Fish() {
		super(legs);
		// TODO Auto-generated constructor stub
	}

	@Override
	public String getName() {
		// TODO Auto-generated method stub
		return this.fishName;
	}

	@Override
	public void setName(String name) {
		// TODO Auto-generated method stub
		this.fishName = name;
	}

	@Override
	public void play() {
		// TODO Auto-generated method stub
		System.out.println("这只名叫"+fishName+"的鱼儿在玩耍");
	}

	@Override
	public void eat() {
		// TODO Auto-generated method stub
		System.out.println("这只名叫"+fishName+"的鱼儿进食了");
	}

	//重写walk方法
	public void walk(){
		System.out.println("由于鱼儿没有腿,因此不能走路");
	}
}

							


3 个答案

wuwa-_-
答案时间:2024-03-25
hncj指尖风雨
答案时间:2023-12-30
package demo1; public abstract class Animal { protected int legs; protected Animal(int legs){ this.legs=legs; } public Animal() { } public abstract void eat(); public void walk(int legs){ System.out.println("用"+this.legs+"条腿走路"); } /** * 获取 * @return legs */ public int getLegs() { return legs; } /** * 设置 * @param legs */ public void setLegs(int legs) { this.legs = legs; } public String toString() { return "Animal{legs = " + legs + "}"; } }package demo1; public interface Pet { public void play(); public void getName(); public void setName(String name); }package demo1; public class Fish extends Animal implements Pet { private int name; protected Fish(int legs) { super(legs); } public Fish() { } @Override public void eat() { System.out.println("鱼在吃草"); } public void walk() { System.out.println("鱼不能走且没有腿"); } @Override public void play() { } @Override public void getName() { } @Override public void setName(String name) { } public String toString() { return "Fish{}"; } } package demo1; public class Spider extends Animal { protected Spider(int legs) { super(legs); } @Override public void eat() { System.out.println("蜘蛛在eat"); } } package demo1; public class Cat implements Pet { public String name; public Cat() { } public Cat(String name) { this.name = name; } @Override public void play() { System.out.println("猫在玩"); } @Override public void getName() { } @Override public void setName(String name) { this.name = name; } public String toString() { return "Cat{name = " + name + "}"; } }

RobertLewandowski9
答案时间:2023-09-22
public abstract class Animal { public String name; protected int legs; public abstract void eat(); protected void setLegs(int legs){ this.legs=legs; } public void walk() { System.out.println(this.name+"这个动物用"+this.legs+"条腿走路"); } } class rabbit extends Animal{ public rabbit(String name,int legs) { this.name=name; this.legs=legs; } @Override public void eat() { System.out.println(name+"吃草"); } public static void main(String[] a) { rabbit r=new rabbit("兔子",4); r.walk(); r.eat(); } }



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





2023-04-15 Animal-Spider-Pet-Cat-Fish
莫諾




步骤6: 练习-Animal类 1. 创建Animal类,它是所有动物的抽象父类。 2. 声明一个受保护的整数类型属性legs,它记录动物的腿的数目。 3. 定义一个受保护的构造器,用来初始化legs属性。 4. 声明抽象方法eat。 5. 声明具体方法walk来打印动物是如何行走的(包括腿的数目)。 步骤8: 练习-Spider类 1. Spider继承Animal类。 2. 定义默认构造器,它调用父类构造器来指明所有蜘蛛都是8条腿。 3. 实现eat方法 步骤10: 练习-Pet接口 根据UML类创建pet(宠物)接口 1.提供getName()返回该宠物的名字 2.提供setName(String name)为该宠物命名 3.提供play()方法 步骤12: 练习 - Cat类 1.该类必须包含String属性来存宠物的名字。 2.定义一个构造器,它使用String参数指定猫的名字;该构造器必须调用超类构造器来指明所有的猫都是 四条腿。 3.另定义一个无参的构造器。该构造器调用前一个构造器(用this关键字)并传递一个空字符作为参数 4.实现Pet接口方法。 5.实现eat方法。 步骤14: 练习-Fish类 1.创建Fish类,它继承Animal类 2.重写Animal的walk方法以表明鱼不能走且没有腿。 3.实现Pet接口 4.无参构造方法 5.提供一个private 的name属性
Animal类

package UML_test;

public abstract class Animal {
	protected int legs;
	
	public Animal() {
	}
	
	public Animal(int legs) {
		this.legs = legs;
	}

	public abstract void eat();
	
	public void walk() {
		if(legs == 0)
			System.out.println(legs + "条腿的水里游的");
		else if(legs == 2)
			System.out.println(legs + "地上走的还有天上飞的");
		else if(legs == 4)
			System.out.println(legs + "地上跑的还有爬的");
	}
}


Spider类

package UML_test;

public class Spider extends Animal{
	
	public Spider(int legs) {
		super(legs);
		legs = 8;
		System.out.println("蜘蛛有" + legs + "条腿,丝滑爬行");
	}
	
	@Override
	public void eat() {
		System.out.println("蜘蛛吃虫子!");
	}

}


Pet接口

package UML_test;

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

Cat类

package UML_test;

public class Cat extends Animal implements Pet {
	String name;
	
	public Cat(String name) {
		this.name = name;
		super.legs = 4;
	}
	
	public Cat() {
		this(null);
	}

	@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("这条猫还算正常,可能会吃鱼!");
	}
	
}


Fish类

package UML_test;

public class Fish extends Animal implements Pet {

	private String name;
	
	public Fish() {}
	
	protected Fish(int legs) {
		super(legs);
		legs = 0;
	}
	
	@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("这条鱼还算正常,可能在吐泡泡!");
	}
	
	public void walk() {
			System.out.println("鱼有" + legs +"条腿" + "条腿的水里游的");
	}
	
}

							


1 个答案

tiang
答案时间:2023-06-05
Animal类 public abstract class Animal { protected int legs; protected Animal(int legs) { this.legs = legs; } public abstract void eat(); public void walk(){ switch (legs){ case 0: System.out.println("没有腿的在地上爬"); break; case 2: System.out.println("两条腿的在地上走"); break; case 4: System.out.println("四条腿的在地上跑"); break; case 8: System.out.println("八条腿主打就是个吓人走路"); break; } } public Animal() { } } Spider类 public class Spider extends Animal{ @Override public void eat() { System.out.println("蜘蛛吃蚊子"); } public Spider() { super.legs=8; } } Pet接口 public interface Pet { String getName(); void setName(String name); void play(); } Cat类 public class Cat extends Animal implements Pet { String name; @Override public String getName() { return name; } @Override public void setName(String name) { this.name=name; } @Override public void play() { System.out.println(name+"想和你一起玩"); } @Override public void eat() { System.out.println(name+":饿饿"); } public Cat(String name) { super.legs=4; this.name = name; } } Fish类 public class Fish extends Animal implements Pet{ @Override public void eat() { } @Override public String getName() { return null; } @Override public void setName(String name) { } @Override public void play() { } @Override public void walk() { System.out.println("鱼不能走路,而且没有腿"); } public Fish() { } }



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





2022-10-22 最终答案
2022-01-20 Animal类里应该增加一个属性:name的,这是所有动物都有的属性。
2021-10-12 fish类里protected


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

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

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

上传截图