JAVA是一種面向?qū)ο蟮木幊陶Z言,其中一個(gè)重要的概念就是派生和繼承。這兩個(gè)概念都與類和對象有關(guān),它們之間有什么區(qū)別呢?
派生(Derivation)是指在現(xiàn)有類的基礎(chǔ)上創(chuàng)建新的類。這個(gè)新類從舊類繼承了一些特性,但是還可以自己添加或者修改一些特性。派生是通過使用關(guān)鍵字“extends”來實(shí)現(xiàn)的。
public class Person { private String name; private int age; public Person(String name, int age) { this.name = name; this.age = age; } public void sayHello() { System.out.println("Hello, my name is " + name + " and I am " + age + " years old."); } } public class Student extends Person { private String studentNumber; public Student(String name, int age, String studentNumber) { super(name, age); this.studentNumber = studentNumber; } public void sayStudentNumber() { System.out.println("My student number is " + studentNumber); } }
上面的代碼中,Student類是派生自Person類的。Student類從Person類中繼承了name和age兩個(gè)屬性,以及sayHello()方法。同時(shí),Student類又添加了一個(gè)新的屬性studentNumber和一個(gè)新的方法sayStudentNumber()。
繼承(Inheritance)是指一個(gè)類從它的父類(或者超類)中繼承了一些屬性和方法。父類的屬性和方法可以被子類直接使用,不需要再次定義。繼承是通過使用關(guān)鍵字“super”來實(shí)現(xiàn)的。
public class Animal { private String name; private int age; public Animal(String name, int age) { this.name = name; this.age = age; } public void sayHello() { System.out.println("Hello, I am " + name + " and I am " + age + " years old."); } } public class Cat extends Animal { private String color; public Cat(String name, int age, String color) { super(name, age); this.color = color; } public void sayColor() { System.out.println("My color is " + color); } }
上面的代碼中,Cat類是繼承自Animal類的。Cat類從Animal類中繼承了name和age兩個(gè)屬性,以及sayHello()方法。同時(shí),Cat類沒有添加新的屬性和方法,只是添加了一個(gè)新的方法sayColor()。
綜上所述,派生和繼承都是實(shí)現(xiàn)類與類之間關(guān)系的方式,但是它們之間有著明顯的區(qū)別。派生是從現(xiàn)有類創(chuàng)建新的類,并從舊類繼承一些特性,同時(shí)還可以添加或修改一些特性;繼承是一個(gè)類從父類中繼承一些屬性和方法,這些屬性和方法可以被子類直接使用,不需要再次定義。