Java中的继承与接口解读
作者:自然哲学
继承的定义
子类继承父类的属性和行为(方法),使得子类对象可以使用父类中的方法与属性。
在 Java 中通过 extends 关键字可以申明一个类是从另外一个类继承而来的,一般形式如下
public class 父类{ String name;//属性 public void study(){ System.out.println(name+"正在学习");//方法 } } public class 子类 extends 父类{ }
每个子类只能继承一个父类,但可以多重继承。
子类可以调用直接父类中的属性和方法
public class Demo{ public static void main(String[] args) { 子类 st = new 子类(); st.name = "学生"; st.study(); } }
运行结果为:
学生正在学习
重写父类中的方法
当一个子类中一个方法具有与其父类中的一个方法相同的签名(指名称、参数个数和类型)和返回值时,称子类中的方法“重写”了父类的方法。
例如:
注意:重写的方法具有与其所重写的方法相同的名称、参数数量、类型和返回值。
public class 子类 extends 父类{ public void study(){ System.out.println(name+"正在努力学习"); } }
若代码旁有绿色小三角表示,即为重写成功,此时运行结果为:
学生正在努力学习
自动转型(向上转型)
格式:父类名 对象名 = new 子类构造方法
注意:
*自动转型后该对象优先执行子类重写的方法。
*子类中特有的方法不能调用。
public class Demo1{ public static void main(String[] args) { 父类 st2 = new 子类(); st2.name="学生2"; st2.study(); } }
结果为:
学生2正在努力学习
强制转型(向下转型)
格式:子类名 对象名 = (子类名)对象
public class Demo1{ public static void main(String[] args) { 父类 st2 = new 子类(); st2.name="学生2"; st2.study(); 子类 st2 = (子类) st21//强制转型 } }
*强制转型的前提是自动转型。
多态
在定义一个方法时,参数类型如为父类,那么继承该父类的子类也可作为方法的参数类型,例如:
public class 父类{ //参数类型为父类 public void study(父类 f){ System.out.println("正在学习");//方法 } } public class Demo2{ public static void main(String[] args) { 子类 st3 = new 子类(); st3.study(st3); } }
运行结果为:
正在学习
接口
Java接口可理解为一种特殊的类。
接口定义关键字:interface。
接口中的属性均需在定义时给定初始值,因为接口中的变量均自带static静态关键字,属于全局共享的类变量:
//定义接口:interface public interface Student { //常量 //static 静态关键字 //常量通常用大写字母命名 public static String NAME = "1"; }
接口中声明的方法默认是抽象方法(即只有方法标识符,而没有方法体)。
//定义接口:interface public interface Student { //常量 //static 静态关键字 public static String NAME = "1"; //抽象方法 public abstract void study(); }
Java中一个类可以继承多个接口,且继承接口时必须重写接口中的所有方法。
接口继承关键字:implement
接口的意义:
*弥补Java普通类不支持多继承的局限。
*接口指明了一个类必须要做什么和不能做什么,相当于类的蓝图。
*接口的作用就是告诉类,你要实现我这种接口代表的功能,你就必须实现某些方法,我才能承认你确实拥有该接口代表的某种能力。
因此在团队开发中起到方法整合的作用,有利为合作开发。
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。