Java学习——面向对象【3】

1. 继承 

  •  java的单继承(一个子类只能继承一个父类),不能多继承(多个父类):A继承自B,A也继承自C,可以多重继承,就是A继承自B,B继承自C(A->B->C),
  •  所有的类都继承于java.lang.Object。
  •  子类继承父类中非private的属性和方法。
  •  子类不能继承父类的构造器(构造方法或者构造函数)。
  •  如果父类的构造器带有参数的,则必须在子类的构造器中显式地通过super关键字调用父类的构造器并配以适当的当属列表。如果父类有无参构造器,则在子类的构造器中用super调用父类构造器不是必须的,如果没有使用super关键字,系统会自动调用父类  的无参构造器。

2. 多态

  多态是同一个行为具有多个不同表现形式或形态的能力。方法的重写和重载是java多态性的不同表现。

 重写(override)重载(overload)
范围子类重写父类同一个类
定义完全相同

1. 参数列表必须改变

2. 返回类型/访问修饰符可以修改

访问权限不能比父类的低可以修改
异常

1. 可以有任何非强制异常

2. 不能有新的强制性异常或比原来更广泛的

被重载的方法可以声明新的或更广的检查异常
final函数不能被重写可以
static函数不能被重写可以 
构造函数不能被重写可以
其他

1. 子类和父类在同一个包中,那么子类可以重写所有方法,除了声明为private和final的方法

2. 子类和父类同一个包中,那么子类只能够重写父类的声明为public和protected的非final方法

3. 如果不能继承一个方法,则不能重写这个方法

 

3. 封装(Encapsulation)

  将抽象性函式接口的实作细节部份包装、隐藏起来的方法。

4. 抽象类 

  • 不能被实例化

  • 不一定包含抽象方法,但是有抽象方法的类必定是抽象类

  • 抽象类中的抽象方法只是声明,不包含方法体

  • 构造方法,类方法(用static修饰的方法)不能声明为抽象方法

  • 抽象类的子类必须给出抽象类中所有的抽象方法的具体实现,除非该子类也是抽象类

5. 接口(Interface)    

  接口是抽象方法的集合,接口通常以interface来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法。

 接口抽象类
构造方法
实例化对象可以不可以不可以
抽象方法必须是抽象方法可以有非抽象方法
方法修饰符任意public abstract任意
成员变量类型任意public static final任意
static可以有不能有可以有
继承单继承可以多继承单继承
类继承(实现)方式extends 类名implements 接口名extends 类名
其他 

1. 类在实现接口的方法时,不能抛出强制性异常,只能在接口中,或者继承接口的抽象类中抛出该强制性异常

2. 接口可以继承(extends)另一接口

3. 如果实现接口的类是抽象类,那么就没必要实现该接口的方法

 

标记接口: 没有任何方法和属性的接口。仅仅表明它的类属于一个特定的类型,供其他代码来测试允许做一些事情。标记接口主要用于以下两种目的:

  • 建立一个公共的父接口:正如EventListener接口,这是由几十个其他接口扩展的Java API,你可以使用一个标记接口来建立一组接口的父接口。例如:当一个接口继承了EventListener接口,Java虚拟机(JVM)就知道该接口将要被用于一个事件的代理方案。

  • 向一个类添加数据类型:实现标记接口的类不需要定义任何接口方法(因为标记接口根本就没有方法),但是该类通过多态性变成一个接口类型。  

6. java包(package)

  为了更好地组织类,Java 提供了包机制,用于区别类名的命名空间。  

  包的作用

  • 把功能相似或相关的类或接口组织在同一个包中,方便类的查找和使用

  • 避免名字冲突:如同文件夹一样,包也采用了树形目录的存储方式。同一个包中的类名字是不同的,不同的包中的类的名字是可以相同的,当同时调用两个不同包中相同类名的类时,应该加上包名加以区别。

  • 包限定了访问权限,拥有包访问权限的类才能访问某个包中的类。

  例子

  创建一个animals的包,并在 animals 包中加入一个接口(interface)。通常使用小写的字母来命名避免与类、接口名字的冲突。

  package animals

  interface Animal { 

    public void eat()

    public void travel();

  }

  类放在包中会有两种主要的结果:

  • 包名成为类名的一部分
  • 包名必须与相应的字节码所在的目录结构相吻合

7. import 关键字

  "import" 语句导入包,则程序中就可以使用该包内的成员。

  import package1[.package2].(classname|*);

9. 其他

  super:引用当前对象的父类,用于访问父类成员

  this:指向当前对象

转载于:https://www.cnblogs.com/coolqiyu/p/6268632.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值