java 多态性 继承_Java封装继承多态

Java中的类可以分为三种:

类:使用class定义且不含有抽象方法的类。

抽象类:使用abstract class定义的类,它可以含有,也可以不含有抽象方法。

接口:使用interface定义的类。

类可以继承(extends)类,可以继承(extends)抽象类,可以继承(implements)接口。

抽象类可以继承(extends)类,可以继承(extends)抽象类,可以继承(implements)接口。

接口只能继承(extends)接口。

1.封装

类使得数据和对数据的操作集成在一起,从而对使用该类的其他人来说,可以不管它的实现方法,而只管用它的功能,从而实现所谓的信息隐藏。  封装隐藏了类的内部实现机制,从而可以在不影响使用者的前提下改变类的内部结构,同时保护了数据。

封装时的权限区分:

private:成员变量和方法只能在类内部被访问,具有类内部可见性。

默认:成员变量和方法只能在包内部被访问,具有包内部可见性。

protected:同一个包中所有的类,同一个项目中不同包中的子类。

public:同一个项目中不同包中所有的类。

详见下图:

fbb1e5b495abcd26d253342b7c91e2aa.png

2.继承

继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以增加新的数据或新的功能,也可以用父类的功能,但不能选择性地继承父类。这种技术使得复用以前的代码非常容易,能够大大缩短开发周期,降低开发费用。继承是为了重用父类代码,同时为实现多态性作准备。

在java中,所有的java类都直接或间的接的继承了java.lang.long.Object类.Object类是所有java类的祖先.在定义一个类时,没有使用extends关键字,那么这个类直接继承Object类。

子类可以继承父类的:

1)继承public和protected修饰的属性和方法,不管子类和父类是否在同一个包里.

2)继承默认权限修饰符修饰的属性和方法,但子类和父类必须在同一个包里.

无法继承的:

1)无法继承private修饰的属性和方法

2)无法继承父类的构造方法

如果从父类继承的方法不能满足子类的需求,在子类中可以对父类的同名方法进行重写(覆盖),以符合要求,抽象方法必须被子类重写但是final修饰的方法不能被重写。抽象类不能实例化。

3.多态

方法的重写、重载与动态连接构成多态性。Java之所以引入多态的概念,原因之一是它在类的继承问题上和C++不同,后者允许多继承,这确实给其带来的非常强大的功能,但是复杂的继承关系也给C++开发者带来了更大的麻烦,为了规避风险,Java只允许单继承,即只能有一个父类,但是可以多个类实现同一个接口。

转换是必须先判断是否为父、子类的关系,此处直接是父子类的关系故省去。

向上转换:子类转换为父类。

class A{

public void add(){

System.out.println(“父类的方法”);

}

}

class B extends A{

public void add(){

System.out,println("子类的方法");

}

A a=new B();

//此处a.add()是执行的子类中的add()方法,即打印“子类的方法”

a.add();

}

向下转换:父类转换为子类。

class A{

public void add(){

System.out.println(“父类的方法”);

}

}

class B extends A{

public void add(){

System.out,println("子类的方法");

}

A a=new A();

B b=(B)a;//向下转换必须强制性转换

//这里a.add()还是执行的子类中的add()方法,即打印“子类的方法”

a.add();

}

参考:http://blog.csdn.net/zhengylsc/article/details/16902073

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值