Java学习第14天

一、今日学习

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)浅层克隆和深层克隆

  1. 渐层克隆:主要复制基本对象的值

  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)子类和父类构造方法的执行顺序

  1. 子类默认调用父类的无参构造方法,即子类的构造方法中会默认调用super()并且在构造方法的第一行。

  2. 如果子类只提供有参的构造方法则,必须在子类的构造方法中调用父类的构造方法。

  3. 执行完父类的构造方法后,再调用本类中的构造方法。

二、遇到问题

(1)Object类的常用方法

(2) Java中克隆的实现,比较困难

三、明日学习

Java中的多态变化

原文地址:https://www.cnblogs.com/zyljal/p/13340430.html