栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

day09

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

day09

标准JavaBean

概述:JavaBean是 Java语言编写类的一种标准规范 。符合JavaBean的类,要求:

  • 类必须是具体的和公共的,
  • 并且具有无参数的构造方法,
  • 成员变量私有化,并提供用来操作成员变量的set 和get 方法。

定义标准学生类,要求分别使用空参和有参构造方法创建对象,空参创建的对象通过setXxx赋值,有参创建的对象直接赋值,并通过show方法展示数据。

public class Student {
    // 成员变量--private
  
    private String name;
    private int age;

    // 空参构造方法  alt+insert--->Constructor
    public Student() {
    }

    // 满参构造方法(建议)
    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }

    // setget方法 alt+insert---> setter and getter
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    // 成员方法
    public void show(){
        System.out.println(name+","+age);
    }

}
API帮助文档

概念:API (Application Programming Interface) :应用程序编程接口。Java API文档是一本程序员的字典 ,是JDK中提供给我们使用的类的说明文档。这些类将底层的代码实现封装了起来,我们不需要关心这些类是如何实现的,只需要学习这些类如何使用即可。所以我们可以通过查询API的方式,来学习Java提供的类,并得知如何使用它们。

  • API文档其实就是jdk中核心类库的说明文档
  • 对于jdk中的核心类库只需要知道如何使用,无须关心他是如何实现的

API的使用步骤

  1. 打开API帮助文档。
  2. 点击显示,找到索引,看到输入框。
  3. 你要找谁?在输入框里输入,然后回车。
  4. 看包。java.lang下的类不需要导包,其他需要。
  5. 看类的解释和说明。
  6. 看构造方法。
  7. 看成员方法
this关键字

含义:

  • 存储的“当前对象”的引用。this代表当前对象。

this使用位置

  • this在实例初始化相关的代码块和构造器中:表示正在创建的那个实例对象,即正在new谁,this就代表谁
  • this在非静态实例方法中:表示调用该方法的对象,即谁在调用,this就代表谁。
  • this不能出现在静态代码块和静态方法中

this关键字的三种用法

this访问本类成员变量: this.成员变量

  • 当方法的局部变量与当前对象的成员变量重名时,就可以在成员变量前面加this.,如果没有重名问题,就可以省略this.
  • this.成员变量会先从本类声明的成员变量列表中查找,如果未找到,会去从父类继承的在子类中仍然可见的成员变量列表中查找
public class Student{
    String name = "张三";
    public void show(){
        String name = "李四";
        System.out.println("name = " + name);// 李四
        System.out.println("name = " + this.name);// 张三
    }
}

this访问本类成员方法: this.成员方法名();

  • 调用当前对象的成员方法时,都可以加"this.",也可以省略,实际开发中都省略
  • 当前对象的成员方法,先从本类声明的成员方法列表中查找,如果未找到,会去从父类继承的在子类中仍然可见的成员方法列表中查找
public class Student{
    public void show(){
        System.out.println("show方法...");
        this.eat();
    }
    public void eat(){
        System.out.println("eat方法...");
    }
}

this访问本类构造方法 :this( )或this(实参列表)

  • 只能调用本类的其他构造器
  • 必须在构造器的首行
  • 如果一个类中声明了n个构造器,则最多有 n - 1个构造器中使用了"this(【实参列表】)",否则会发生递归调用死循环
public class Student {

    public Student() {
        this("张三",18); //调用指定的有参数构造
        System.out.println("空参构造方法...");
    }

    public Student(String name) {
        this();//当使用this()调用另一个构造方法时,此代码必须是此构造方法的第一句有效代码。
        System.out.println("有参构造方法...");
    }
    public Student(String name, int age){
        System.out.println("有参构造方法..."+name+","+age);
    }
}
super关键字

含义:

  • super代表当前对象中从父类的引用的。可以理解为存储的“父类对象”的引用;

super使用的前提

  • 通过super引用父类的xx,都是在子类中仍然可见的
  • 不能在静态代码块和静态方法中使用super

super关键字的三种用法

super访问父类的成员变量: super.父类成员变量名

class Fu{
    int num = 100;
}

class Zi extends Fu{
    int num = 10;

    public void show(){
        int num = 1;
        System.out.println("局部变量num:"+num);// 1
        System.out.println("Zi 类中的num:"+this.num);// 10
        //在子类中访问父类的成员变量,特别是当子类的成员变量与父类的成员变量重名时。
        System.out.println("Fu 类中的num:"+super.num);// 100

      }
}

super访问父类的成员方法: super.成员方法名( );

class Fu{
    public void method1(){
        System.out.println("Fu method1...");
    }
}

class Zi extends Fu{
    public void show(){
        // 访问父类的method1方法
        super.method1();
    }

    @Override
    public void method1(){
        //在子类中调用父类的成员方法,特别是当子类重写了父类的成员方法时
        super.method1();// 调用父类的method1方法
        System.out.println("Zi method1...");
    }
}

super访问父类的构造方法:super()或super(实参列表)

class Fu{
    public Fu(){
        System.out.println("Fu 类的空参构造方法..");
    }
    public Fu(String name, int age) {
        System.out.println("Fu 类的有参构造方法..");
    }
}
public class Zi extends Fu{
    public Zi(){
        //在子类的构造器首行,用于表示调用父类的哪个实例初始化方法
        super();// 调用父类的空参构造方法
        System.out.println("Zi 类的空参构造方法..");
    }
    public Zi(String name,int age){
        super(name,age);// 调用父类的有参构造方法
         System.out.println("Zi 类的有参构造方法..");
    }
}

总结:

  • super访问成员变量和成员方法: 优先去父类中找,如果有就直接使用,如果没有就去爷爷类中找,如果有,就用,依次类推...
  • 子类的构造方法默认会调用父类的空参构造方法,如果父类中的没有空参构造方法,只定义了有参构造方法,会编译报错
就近原则和追根溯源原则

找变量

没有super和this

  • 在构造器、代码块、方法中如果出现使用某个变量,先查看是否是当前块声明的局部变量,
  • 如果不是局部变量,先从当前执行代码的本类去找成员变量
  • 如果从当前执行代码的本类中没有找到,会往上找父类的(非private,跨包还不能是缺省的)

存在this :

  • 通过this找成员变量时,先从当前执行代码的本类中找,没有的会往上找父类的(非private,跨包还不能是缺省的)。

存在super 

  • 通过super找成员变量,直接从当前执行代码所在类的父类找
  • super()或super(实参列表)只能从直接父类找
  • 通过super只能访问父类在子类中可见的(非private,跨包还不能是缺省的)

注意:super和this都不能出现在静态方法和静态代码块中,因为super和this都是存在与对象中的

找方法

没有super和this

  • 先从当前对象(调用方法的对象)的本类找,如果没有,再从直接父类找,再没有,继续往上追溯

存在this :

  • 先从当前对象(调用方法的对象)的本类找,如果没有,再从父类继承的可见的方法列表中查找

存在super 

  • 直接从当前对象(调用方法的对象)的父类继承的可见的方法列表中查找

找构造器

  • this()或this(实参列表):只从本类中,不会再往上追溯
  • super()或super(实参列表):只从直接父类找,不会再往上追溯
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/878436.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号