Java中的继承、多态问题

由于也是第一次接触这两个概念,可能理解没有那么深,但至少是符合小白阅读的。跟随今天的作业来学习继承和多态吧!

1、多态是什么,多态的前提条件是什么?

嗯。。。有点懵。多态是Java中面向对象思想中的核心思想之一,是指子类可以通过继承、实现等方式去实现一个事物可以拥有多种形态。是有点抽象,后面通过实例慢慢了解吧。
前提条件:必须在有继承或者实现的基础上

2、多态中成员访问的特点分别是什么?

格式:Fu f = new Zi(定义类似于创建某一个类型的变量。但多态中等号左边是父类,等号右边是子类,子类是继承父类的)
编译运行中特点:
1.成员变量:编译看等号左边,运行也看等号左边
2.成员方法(非静态方法):编译看等号左边,运行看等号右边
3.静态方法:编译看等号左边,运行也看等号左边
总结:先死记,后续理解了会补充(可在文章第六点实例中编写体会)

3、什么是接口,它的特点是什么?

接口是Java中面向对象的一种机制,类似于抽象类,但不是抽象类。其定义的方法,只有方法特征,没有具体的方法主体。
特点:接口中定义的方法必须是抽象方法,若不写public abstract默认也是抽象方法,后面在实现接口的时候必须进行方法的重写才能调用。
格式:<修饰符> interface <接口名>(参数){
定义变量量;//叫是叫做变量,但值是确定的
定义抽象方法;
}

4、接口的成员特点有哪些?

成员包括成员变量和成员方法。
成员变量:前缀即使不加,系统默认也是static final
public static final 变量名 = 值;

成员方法:必须是抽象方法,即使不加抽象abstract 前缀,系统默认也是抽象。

5、抽象类和接口的区别是什么?

1.抽象类中可以定义非抽象方法。而接口中必须都是抽象方法。

2.抽象类的继承只能是单继承、多层继承。
接口中可以被类多实现(实现和继承只是关键字不同,大致功能是一样的。实现implements;继承extends)
接口之间可以多继承、多层继承。

6:定义一个父类Animal eat方法 , 定义两个子类 Dog 特有方法keepHome , Cat 特有方法 catchMouse ;并且 重写eat方法

测试类中写一个方法,参数列表有一个参数Animla类型,
要求: 调用该方法分别传递Dog对象 和Cat 对象, 使用instanceof进行将转后调用eat,和他们的特有方法

package cn.Demo01;
/*
 * 定义一个父类Animal eat方法 , 定义两个子类 Dog  特有方法keepHome ,   Cat 特有方法 catchMouse ;并且 重写eat方法
   测试类中写一个方法,参数列表有一个参数Animla类型,
   要求: 调用该方法分别传递Dog对象 和Cat 对象, 使用instanceof进行将转后调用eat,和他们的特有方法
 */
public abstract class Animal {
	public abstract void eat();
}

package cn.Demo01;

public class Dog extends Animal{
	public void eat(){
		System.out.println("狗在吃饭");
	}
	
	public void keepHome(){
		System.out.println("狗看家");
	}
}

package cn.Demo01;

public class Cat extends Animal{
	public void eat(){
		System.out.println("猫吃饭");
	}
	
	
	public void catchMouse(){
		System.out.println("猫抓老鼠");
	}
}

package cn.Demo01;

public class Test {
	public static void main(String[] args){
		Animal d = new Dog();
		Animal c = new Cat();
		ceshi(d);
		ceshi(c);
	}
	public static void ceshi(Animal a){
		
		if(a instanceof Dog){
			Dog d = (Dog) a;
			d.eat();
			d.keepHome();
		}
	
		
		if(a instanceof Cat){
			Cat c = (Cat) a;
			c.eat();
			c.catchMouse();
		}
	
	}
}

在这里插入图片描述

7.测试: 如果一个方法的返回值类型是父类,那么能否返回一个子类对象.(该父类不管是类,抽象类还是接口)

父类是类:可以

package cn.Demo02;
/*
 * 测试: 如果一个方法的返回值类型是父类,那么能否返回一个子类对象.(该父类不管是类,抽象类还是接口)
   测试父类是类
 */
public class Fu {
	public void ceshi(){
		System.out.println("这是父类");
	}
}

package cn.Demo02;

public class Zi extends Fu{
	public void ceshi(){
		System.out.println("这是子类");
	}
}

package cn.Demo02;

public class Test {
	public static void main(String[] args) {
		
		Fu z = ceshi();  //此处若是子类接受,则不可以
		z.ceshi();
		
		
	}
	
	public static Fu ceshi(){
		Zi z = new Zi();
		return z;
	}
}

在这里插入图片描述
父类是抽象类:
父类是接口:
这两个等有时间再验证。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值