继承
来源:互联网 发布:王婉茹 黄翔 知乎 编辑:程序博客网 时间:2024/05/22 13:44
1、通过extends关键字继承
注意:1、类只支持单继承;2、多个类可以继承一个父类;3、可以多层继承,即一个类的父类可以再去继承另外的父类;
2、重写(即覆盖) 子类对继承的方法进行修改,即对父类的方法进行重写
子类的访问权限应大于父类
3、super关键字 用于访问父类的成员
3.1 使用super调用父类的成员的变量和方法,格式如下:
super.成员变量;
super.成员方法(参数);
3.2 使用super关键字调用父类的构造方法,格式如下
super([参数1,参数2······]); 且必需位于子类构造方法的第一行,并且只能出现一次。
当不写super时,子类在实例化时java会默认调用父类的无参数的构造函数,父类最好写一个无参构造函数,防止子类继承时出错。
4、final关键字 “”最终“的含义
可用于修饰类、变量和方法。被final修饰的类、变量和方法有如下特性:
4. 1 final修饰的类不能被继承;
4.2 final修饰的方法不能被子类重写;
在父类中定义某个类时,不希望被子类重写,就可以用final对该方法进行修饰。
4.3 final修饰的变量(成员变量和局部变量)是常量,只能赋值一次。
5、抽象类与接口
5.1 抽象方法:不包含方法体的方法,且必需使用abstract关键字修饰,例如:abstract void work();
使用abstract修饰的类为抽象类。包含抽象方法的类必需声明为抽象类,但抽象类可以不包含任何抽象方法。
抽象类不可以被实例化,因为抽象类中可能包含抽象方法,而抽象方法无方法体,不可以被调用。只有当子类继承了为抽象类的父类,并且在子类中将抽象类的抽象方法实现。
例如:
public class Oper { public static void main(String[]args){ Child child =new Child(); child.show();} } //定义抽象类abstract class Father{//定义抽象方法abstract void show();}//定义Child类继承抽象类Fatherclass Child extends Father{//实现抽象方法void show(){System.out.println("中华人民");}}5.2接口
当一个抽象类中所有方法都是抽象方法时,该类就可定义为接口。接口用interface关键字声明,
例如:
interface Father{int num = 2; //定义全局变量void show(); //定义抽象方法}接口中定义的方法和变量都包含一些隐式的默认修饰符,接口中定义的方法前含有隐式”public abstract“,即void show()实际上为”public abstract void show()“。接口中的变量前有”public static final“。
不能通过实例化对象的方式调用接口中的方法,当要调用接口中的方法时,需要定义一个类,使用implements关键字实现接口,并在类中实现接口中所有的方法。
例:
public class Oper { public static void main(String[]args){ Child child =new Child();//实例化Child对象 child.show();//调用Child类的show()方法} } //定义Father接口interface Father{int num = 2; //定义全局变量void show(); //定义抽象方法}//定义Child类实现Father接口class Child implements Father{//实现show()方法public void show(){System.out.println("hhhh");}}在程序中,还可以定义一个接口使用extends去继承另一个接口。
接口的特点:
1、接口中的方法都是抽象的,不能实例化对象;
2、当一个类实现接口时,如果这个类是抽象类,则实现接口中的部分方法即可,否则需要实现接口中的所有方法;
3、一个类通过implements关键字实现接口时,可以实现多个接口,接口之间用逗号隔开;
4、一个接口可以通过extends继承多个接口,接口之间用逗号隔开;
5、一个类在继承另一个类时还可以实现接口,extends在implements前。
- 继承
- 继承
- 继承
- 继承
- 继承
- 继承
- 继承
- 继承
- 继承
- 继承
- 继承
- 继承
- 继承
- 继承
- 继承
- 继承
- 继承
- 继承
- js面向对象的程序设计(转自ohmygirl)
- C#Dll 相关问题
- OJ第三批——Problem J:C++复数运算符重载(+与<<)
- 新型的按键扫描程序,仅三行程序(amo)
- 《编程导论(Java)·1.2类》
- 继承
- CentOS 用户管理及分组管理(一)
- 第十七周oj刷题——Problem A: 实现复数类中的加运算符重载【C++运算符重载】
- Tableview 每行cell点击后扩展出一行
- scikit-learn:0.5. Choosing the right estimator(你的问题适合什么estimator来建模呢)
- 求最长有效括号长度 java
- XMPP协议及其扩展详解
- python处理excel的第三方库
- SQLite剖析(6):临时文件和内存数据库