抽象类和接口中的静态方法?

抽象类和接口中的静态方法?

老师,抽象类中的静态方法可以被继承不能被重写,接口中的静态方法不可以被继承,是这样吗?普通方法中的静态方法和抽象方法一样吗?

正在回答

登陆购买课程后可参与讨论,去登陆

2回答

同学你好,1、在接口中添加静态方法带来了一个限制 :这些方法不能由实现它的类继承,也就是说实现类并没有接口中的静态方法,所以声明为接口就访问接口中的内容,这个内容,并不包括接口中的静态方法。

    2、其余内容同学的说法是正确的,声明为父类就访问父类,声明为子类就访问子类的,同学可以参考如下例子来理解一下:

public interface IFly {
	static int TEMP=2;
	void fly();
	static void play(){
		System.out.println("飞行的静态方法~");
	}

}
public class Brid implements IFly{
	public static final int TEMP=3;
	@Override
	public void fly() {
		System.out.println("小鸟会飞~~~");
		
	}
	public static void play(){
		System.out.println("小鸟飞的静态方法~");
	}

}
public abstract class Animal {
	public static void eat(){
		System.out.println("生物都会吃饭");
	}
}
public class Cat extends Animal{
	public static void eat(){
		System.out.println("猫咪吃猫粮~~");
	}
}
public class TestDemo1 {
	public static void main(String[] args) {
		Animal cat2 = new Cat();
		cat2.eat();
		
		Cat cat = new Cat();
		cat.eat();

		IFly brid2 = new Brid();
		brid2.fly();
		//brid2.play();
		System.out.println(brid2.TEMP);
		
		
		
		Brid brid = new Brid();
		brid.play();
		System.out.println(brid.TEMP);
		
		IFly.play();
	}
}	

如果我的回答解决了你的疑惑,请采纳,祝学习愉快~

好帮手慕小班 2020-05-26 14:07:51

同学你好,1、同学的说法是正确的,抽象类中的静态方法可以被继承不能被重写,接口中的静态方法不可以被继承。

    2、普通方法中的静态方法和抽象方法一样吗  这里同学是想问在普通类中,静态方法和抽象方法一样吗?

    如果是,在普通类中静态方法与抽象方法不一样。

如果同学想表达的不是这个意思,还麻烦同学具体描述一下。

如果我的回答解决了你的疑惑,请采纳,祝学习愉快~

  • 提问者 mahsiaoko #1
    我想问的是在抽象类和普通类中,静态方法是否都是可以被继承但不能被重写
    2020-05-26 14:20:35
  • 好帮手慕小班 回复 提问者 mahsiaoko #2
    同学你好,在抽象类和普通类中,静态方法都是可以被继承但不能被重写。但是有一个小知识点,在抽象类中没有静态的抽象方法哟。 如果我的回答解决了你的疑惑,请采纳,祝学习愉快~
    2020-05-26 14:51:13
  • 提问者 mahsiaoko 回复 好帮手慕小班 #3
    老师,您好,我还有一个问题,关于static的,static属性和方法,是不是声明为父类就访问父类的,声明为接口就访问接口中的,声明为子类就访问子类中的,不会因为子类继承或者实现时重新定义了一个完全一样的static方法或属性而访问子类中的?
    2020-05-26 14:59:31
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师