抽象类,密封类

抽象类

 抽象类:包含抽象方法的类。

  • (1) 抽象方法由abstract修饰,类也需要由abstract修饰;
  • (2)抽象方法不能被private所修饰,可以被public、protected修饰;如果不加访问修饰限定符,那么默认为public。
  • (3)抽象类中可以有非抽象方法;
  • (4)抽象类不能创建实例对象。(new)
abstract  class Fish{
	//抽象类中的抽象方法不予以实现;   当有一个类继承了当前的抽象类后,需要实现。
    public abstract void swim();
    protected abstract void eat();
    //private abstract void fly();//error   抽象方法不能被private所修饰
    public void fun1(){
        System.out.println("abstract Fish fun1()");//抽象类中的非抽象方法,要进行实现
    }
}

 抽象类的派生类:

  • (1)如果是普通类,那么必须实现抽象类的抽象方法;
  • (2)如果是抽象类,可以不实现基类的抽象方法。
class JinLi extends Fish{
        public JinLi(){
            System.out.println("JinLi() init");
        }
        public void swim(){
            System.out.println("JinLi:popo");
        }
}//普通类
abstract class NianYu extends Fish{
   		 public NianYu() {
       		 System.out.println("NianYu() init");
   		 }
}//抽象类
abstract class DaJinLi extends Fish{
        public void swim(){
            System.out.println("JinLi:popo");
        }
     }
public class AbstractObject {
    public static void main(String[] args) {
      JinLi jinli = new JinLi();
      jinli.swim();
    }
}
JinLi() init
JinLi:popo
  • 抽象类的使用场景:
    (1)因为抽象类不能实例化对象,所以必须要有子类来继承它之后才能使用。这样就可以把一些具有相同属性和方法的组件进行抽象,这样更有利于代码和程序的维护。
    比如本科和研究生可以抽象成学生,他们有相同的属性和方法。这样当你对其中某个类进行修改时会受到父类的限制,这样就会提醒开发人员有些东西不能进行随意修改,这样可以对比较重要的东西进行统一的限制,也算是一种保护,对维护会有很大的帮助。
    (2)当又有一个具有相似的组件产生时,只需要实现该抽象类就可以获得该抽象类的那些属性和方法。
    比如学校又新产生了专科生这类学生,那么专科生直接继承学生,然后对自己特有的属性和方法进行补充即可。这样对于代码的重用也是很好的体现。
    Tips:
    @ 面试问题:
    抽象类和普通类的区别 ?
  • (1)抽象类不能被实例化;
  • (2)抽象方法必须是public或者protected,或者不写;
  • (3)抽象类被abstract所修饰;
  • (4)抽象方法不能在抽象类中实现。

密封类

 当一个类,被final所修饰的时候。称为密封类。

  • (1)该类不能作用于基类,就算派生类也被final所修饰也不可以。作用:防止有意的派生。
  • (2)密封方法:不能被重写。
    public final void fun1() {
    System.out.println(“Person init()”);
    }
final class Person{
    private String name;
    public String sex;
    private int age;
    public Person(){
        System.out.println("final() init");
    }
}
//class Student extends Person{}//密封类不能被继承 error
// final class Studebt extends Person{}//派生类被final所修饰也不能 error

Over…经过最棒的仔的建议,希望有所改进哈hahhaha

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值