Java三大特性之继承+多态
来源:互联网 发布:excel单项问卷数据录入 编辑:程序博客网 时间:2024/05/14 01:59
Java中面向对象3大特性中,继承和多态还是挺重要的,也是面试题中常考内容之一。
一.继承:(extends关键字,父类最好用protected,构造方法有参和无参均写上,注意方法重写和重载)
定义:从父类中派生出的子类,子类具有父类的属性和方法,也有父类没有的个性方法,是is-a的关系,也就是说父类是一般,子类是特殊。
特点:1.关键字:一般采用SubClass extends SuperClass的方式,带有extends关键字。
2.修饰符:当父类被private修饰符修饰时,父类属性和行为可以被子类所继承,但是只有父类可以访问其属性和方法,子类不能访问父类的私有属性和方法;
当父类不被修饰符修饰时,父类属性和行为可以被子类继承,只有同一包类和父类能访问父类的私有属性和方法;子类不能访问父类的私有属性和方法;
当父类被protected修饰符修饰时,父类属性和行为可以被子类继承,同一包的类,父类及其子类可以访问父类的私有属性和方法;
当父类被public修饰符修饰时,父类属性和行为可以被子类继承,同一包的类,父类及其子类,其他包的类均能访问其属性和方法。
3.构造方法:若父类无构造方法或者只有一个无参构造方法,子类会自动调用其无参构造方法,无需显示声明;
父类构造方法:public SuperClass(){ this.name=name;}
子类构造方法:默认调用无参构造方法
若父类只有有参构造方法,子类在构造方法中必须显式调用其有参构造方法,否则编译出错;
父类构造方法:public SuperClass(String name){ this.name=name;}
子类构造方法:public SubClass(String name ,int age ){super(“张三”) ; this.age=age;}
若父类有无参构造方法也有参构造方法,子类在构造方法中如果不显式声明,那调用的是父类的无参构造方法;
父类构造方法:public SuperClass( ){ } ; public SuperClass( String name){ this.name=name;}
子类构造方法:默认调用无参构造方法
总结:构造方法灵活多变,根据具体需要外界引入的值作为有参构造方法,父类最好有参和无参均写上,子类引入私有属性时,带上super(父类属性),然后定义自己属性。
4. 个性方法:(方法重载和方法重写)
1) 方法重写(方法覆盖):子类和父类的返回类型和方法签名(方法名+参数列表)一致;参数列表(参数类型+参数数量)
父类方法:
子类方法:
2)方法重载:同一类中,方法名一致,参数列表不同;与返回类型无关。
5.优点:提高代码复用性,让父类和子类产生联系
二.多态:
定义:同一消息根据发送对象不同,采取不同的行为方式
特点:要有继承,要有方法重写,父类引用指向子类对象;
好处:对已存在代码具有可替换性;可扩充性--可新增子类;向子类提供公共接口;灵活性或者简化性
父类:
子类:----------继承和重写
外部调用:-------父类引用指向子类对象,但是子类的个性方法无法调用
- Java三大特性之继承+多态
- java的三大特性之继承
- JAVA三大特性之二---继承
- java三大特性之 继承
- Java三大特性之继承
- Java三大特性之继承
- Java三大特性之---继承
- java 三大特性之继承
- Java 的三大特性之继承
- java的三大特性之继承
- Java三大特性之继承
- java的三大特性之继承
- java的三大特性之继承
- Java三大特性之封装、继承、多态
- java三大特性:封装、继承、多态
- java 三大特性 封装 继承 多态
- Java三大特性,封装、继承、多态
- Java三大特性---封装,继承,多态
- 安卓开发调用第三方应用(如WPS)打开文档(比如Word),如何设置文件只读,不能被修改?
- Binary Tree Maximum Path Sum
- define和const
- 告别2016,迎接2017
- 深度讲解VIEWPORT和PX是什么
- Java三大特性之继承+多态
- Convolutional Neural Networks for Visual Recognition 翻译第一段
- 小收获:osgtexture2D报错问题解决
- Spark1.3从创建到提交:7)SparkContext.runJob源码分析
- 要开发一个MAC远程连接某台MAC,将他某个文件夹拷到本地的项目 请问大家有思路吗?
- int和Integer的区别
- 网上看到的一个对"说走就走的旅行"最好的解答
- JavaGUI编程
- FFTW+VS2015 64&32位