• 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中的多态变化

  • 相关阅读:
    C语言资料分享
    vue子组件添加事件无效解决
    vue-cli3 vue动画 打包后不生效解决
    setTimeOut定时器实现数组内容循环获取
    echart 之仪表盘 动态分段颜色实现
    elementUI table树默认箭头修改
    《二》打包发布工程-README.md编辑
    《一》打包发布工程--npm 打包发布js库篇
    npm打包发布js库包npm ERR! 403 Forbidden
    安装nrm 后执行报错TypeError [ERR_INVALID_ARG_TYPE]: The "path" argument must be of type string
  • 原文地址:https://www.cnblogs.com/zyljal/p/13340430.html
Copyright © 2020-2023  润新知