java的抽象类和密封类

抽象类就是被abstract修饰的类,而抽象类可以拥有自己的抽象方法

abstract class Animal{//抽象类
	abstract public void cry();//抽象方法 不做具体实现  只能用public 或者 protected修饰
	                            //不加修饰默认public
	public void fun1(){//抽象类中可以有抽象方法 也可以有非抽象方法
		
	}
}

可以看到,抽象类的抽象方法也需要用abstact修饰,抽象方法不做具体实现,只能用

public和protected修饰,如果用private不加修饰符默认为public类型。

抽象类中也可以有非抽象方法。

如果一个非抽象类继承了抽象类,那这个非抽象类就一定要实现抽象类中的抽象方

法。

class Dog extends Animal{
	public void cry(){//非抽象类继承必须实现抽象方法
		System.out.println("wangwang");
	}
}

如果非抽象类继承非抽象类,可以不实现它的抽象方法,继续抽象:

abstract class cat extends Animal{
	abstract public void cry();//如果一个抽象类继承了一个抽象类 那么可以不实现基类的抽象方法
}

但如果紧接着又有一个类继承这个类,那么这个类必须实现抽象方法

class LitterCat extends cat{//如果一个类再次继承了这个抽象类 必须进行实现
	public void cry(){
		System.out.println("litter cat cry");
	}
}

实例化的类可以实现它的属性和方法,但是抽象类的抽象方法没有方法体,无法实

现,所以抽象类不能实例化,如果要实例化要向上转型。

public static void main(String[] args) {
		//Animal a = new Aniaml();//抽象类不能实例化一个对象
		Animal a = new Dog();
	}

抽象类必须有子类用extends继承,一个类只能继承一个抽象类。

抽象类不能用static修饰,但是内部抽象类可以被static修饰。


密封类:简单说就是被final修饰的类,密封类不能被继承,防止了恶意的派生。

密封方法也不能被重写

class Base{//密封类
	public final void fun1(){//密封方法
		System.out.println("Base.fun1()");
	}
	public void fun2(){
		System.out.println("Base.fun2()");
	}
}
class Derive extends Base{
	public void fun1(int i){
		System.out.println("Derive.fun1()");
	}
	public void fun2(){
		System.out.println("Derive.fun2()");
	}
}

如有错误,请多多指教

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值