Java继承
1 继承的基本概念
(1)可以先创建公共属性的父类,然后再根据各子类的不同特性创建其各个不同属性和方法。
(2)继承得到的类为子类,被继承的类为父类,也叫超类。
(3)Java不支持多继承(子类只能有一个父类)。
2 Object类及其方法
(1)Java中的所有类都默认继承Object类,Object是所Java所有类的父类。
(2)定义:public class Object
(3)Object是类层次结构的根类,每个类都使用Object作为超类,所有对象(包括数组)都实现这个类的方法。
(4)Object类的常用方法:


3 对象中的克隆
(1)克隆的限制
-
被克隆的类必须自己实现Cloneable接口,以指示Object.clone()方法可以合法地对类实例进行按字段赋值。
-
实现Cloneable接口的类应该使用公共方法重写Object,clone(它是受保护的)。
-
在Java.lang.Object类中克隆方法的定义:
protected Object clone() throws CloneNotSupportedException
创建并返回此对象的一个副本,表明是一个受保护的方法,同一个包中可见。
(2)浅层克隆和深层克隆
-
渐层克隆:主要复制基本对象的值
-
深层克隆:当类存在聚合关系时,克隆必须考虑聚合对象的克隆,可以复制引用类型的字段。
4 Java中的继承
(1)公式:class 子类 extends 父类{}
(2)作用:使用继承,子类可以拥有父类中的非私有属性,这样可以使多个类中相同的属性提取出来作为父类管理。
-
子类共享父类中的非私有属性
-
子类可以拥有父类中的非私有方法
(3)Java不支持多继承,子类只能继承一个父类,但是一个父类可以被多个子类继承。
5.super关键字
子类可以使用super关键字调用父类的非私有属性和非私有方法,还可以调用父类的非私有构造方法
1 public class Person {
2 public String name;
3 public String sex;
4 public int age;
5 public String getName() {
6 return name;
7 }
8 public void setName(String name) {
9 this.name=name;
10 }
11 public String getSex() {
12 return sex;
13 }
14 public void setSex(String sex) {
15 this.sex=sex;
16 }
17 public int getAge() {
18 return age;
19 }
20 public void setAge(int age) {
21 this.age=age;
22 }
23 }
(1)使用super关键字调用父类属性
语法:super.父类属性 (super关键字可以省略)
1 public class Student extends Person{
2 private String deparement;
3 private String specialty;
4 String name1=super.name; //调用父类属性
5 String name2=name; //调用父类属性
6 }
(2)使用super调用父类方法
语法:super.父类方法 (super关键字可以省略)
1 public class Student extends Person{
2 private String deparement;
3 private String specialty;
4 public void test1() {
5 super.getAge(); //调用父类方法
6 }
7 public void test2() {
8 getAge(); //调用父类方法
9 }
10 }
(3)使用super调用父类的构造方法
如果使用super(),则调用父类的无参构造方法;如果使用super(参数),则调用父类的有参构造方法
1 public class Person{
2 public String name;
3 public int age;
4 public Person() {
5 }
6 public Person(String name,int age) {
7 this.name=name;
8 this.age=age;
9 }
10 }
11 public class Student extends Person{
12 public student() {
13 super("sky",26); //调用父类构造方法
14 }
15 }
(4)子类和父类构造方法的执行顺序
-
子类默认调用父类的无参构造方法,即子类的构造方法中会默认调用super()并且在构造方法的第一行。
-
如果子类只提供有参的构造方法则,必须在子类的构造方法中调用父类的构造方法。
-
执行完父类的构造方法后,再调用本类中的构造方法。


浙公网安备 33010602011771号