Java学习(构造方法、this关键字、super应用)
构 造 方 法
定义:对象创建时使用的方法,即在new一个新对象时,对应构造方法,直接对属性赋值。
语句格式: 修饰符(public 等) 构造方法名(必须跟当前类名一样,否则报错)(参数列表){
}
构造方法的体现:
(1)构造方法没有返回值类型,也不需要返回值。因为它是为成员变量赋值,赋值结束,方法随之执行结束。
(2)构造方法名称必须与类名保持一致
(3)构造方法没有具体的返回值
默认构造方法与细节:
默认构造方法:如果没有显示指定构造方法,编译会在编译时自动添加默认的构造方法,如果已经指定了构造方法,则不会再添加默认构造方法。
细节:
(1)一个类中可以有多个构造方法,多个重载方法是以重载的形式存在的。
(2)构造方法是可以被private修饰的,作用是其他类无法创建此方法的对象。
this关键词
构造方法之间的调用,可以通过this关键词来完成
构造方法调用格式:
this(参数列表);
成员变量和局部变量同名问题:
当在方法中出现了成员变量和局部变量重名的情况时,可以在成员变量前添加this.关键词来区分。
Super关键字
子父类中构造方法的调用:
在创建子类对象时,父类的构造方法会先执行,因为子类中所有构造方法的第一行有默认的隐式super();语句。
格式:
调用本类中的构造方法
this(实参列表);
调用父类中的空参数构造方法
super();
调用父类中的有参数构造方法
super(实参列表);
当父类中没有空参数构造方法时,子类的构造方法必须有显示的super语句,指定要访问的父类有参数构造方法。
子类对象创建过程的细节:
(1)只要是构造方法,第一行都有默认的super();
(2)Java中,定义了一个所有类的父类:opject
注意:
类中的构造方法默认第一行都有隐式的super()语句,在访问父类中的空参数构造方法。所以父类的构造方法既可以给自己的对象初始化,也可以给自己的子类对象初始化。
如果默认的隐式super()语句在父类中没有对应的构造方法,那么必须在构造方法中通过this或者super的形式明确要调用的构造方法。
实例:
package com.oracel.demo01;
public class Person {
    private int id;
    private String name;
    private int age;
    //系统会默认提供一个空参构造,当自己添加时会取消,若测试类中需要,需要自己手动添加
    public Person(){
    }
    //可以存在多个构造方法,以重载的形式存在
    public Person(int id){
        this.id=id;
    }
    public Person(int id,String name,int age){
        this(id);       //使用this关键词,调用构造方法this.name=name;  //接收参数,并且赋值
        this.age=age;  //使用this.关键词  来区分成员变量和局部变量
    }
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    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 boolean compare(Person p){
        return this.age==p.age;
    }
}
测试类:
package com.oracel.demo01;
public class Test {
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        //构造函数只能在创建对象(new)的时候赋值一次
        //构造方法是给成员变量初始化的,但系统还是先赋默认值,然后再传参
          Person p=new Person(1,"寒武",18);
          System.out.println(p.getId()+"..."+p.getName()+"..."+p.getAge());
    }
}
Java学习(构造方法、this关键字、super应用)的更多相关文章
- Java面向对象-构造方法,this关键字
		
Java面向对象-构造方法,this关键字 构造方法 概念:构造方法是一个特殊的方法,这个特殊方法用于创建实例时执行初始化操作: 上代码: package com.java1234.chap03.se ...
 - Java类的设计----关键字super
		
关键字super 在Java类中使用super来引用父类的成分 super可用于访问父类中定义的属性 super可用于调用父类中定义的成员方法 super可用于在子类构造方法中调用父类的构造方法 su ...
 - java中构造方法和方法super/this超类与子类中初始化顺序
		
java中构造方法和方法全面解析 我相信大多说人都对构造方法.方法不陌生,而且很了解,但我也相信有很多像我这样的没有一个很好很清晰很全面的认识,今天就把它整理如下,希望能给大家带来点方便与帮助,也希望 ...
 - Java学习笔记18---final关键字修饰变量、方法及类
		
英语里final这个单词大家都知道是"最终的"意思,其实还有一个意思是"不可更改的".在Java里,final关键字作"不可更改的"来解释更 ...
 - Java学习之finally关键字总结
		
Java中的final关键字非常重要,它可以应用于类.方法以及变量.这篇文章中我将带你看看什么是final关键字?将变量,方法和类声明为final代表了什么?使用final的好处是什么?最后也有一些使 ...
 - Java 继承extends、关键字super和this、多态、动态绑定
		
Manager 经理 extends Employee 雇员 "is-a"(是)关系是继承的一个明显特征.每个经理都是一名雇员. 从术语的角度讲,Manager是子类,Emplo ...
 - java学习笔记-继承中super关键字
		
背景: 在java继承的概念中我们得知,被声明为私有的类成员对所属的类来说仍然是私有的.类之外的任何代码都不能访问,包括子类. super关键字的两种用法: 1.用于调用超类的构造函数: 2.用于访问 ...
 - Java学习笔记---继承和super的用法
		
自从换了个视频教学,感觉比原来那个好多了,就是学校网速太渣,好多视频看一会卡半天,只能先看看已经下载的了. 不过也好,虽然不能从开始开始重新开,但是已经看过一次,在看一次也是好的,就当巩固学习了. 继 ...
 - Java学习之this关键字的使用
		
•区分成员变量和局部变量 public class Person { String name; int age; public void set(String name,int age) { this ...
 - javasE学习笔记:关键字super的使用
		
/* super 的作用: 1 . super可以在子类中引用父类的成员,通过 .的方式和属性.this相对应. 2. 在子类的构造方法中可以可使用super(参数列表)语句调用父类的构造方法 3. ...
 
随机推荐
- 音视频处理之FFmpeg程序的介绍与使用20180302
			
一.FFMPEG程序介绍与使用 主要介绍一下ffmpeg工程包含的三个exe的使用方法. 1. FFMPEG程序介绍 1.1.下载 ffmpeg的官方网站是:http://ffmpeg.org/ 下载 ...
 - CDOJ--1237
			
原体连接:http://acm.uestc.edu.cn/problem.php?pid=1237 分析:质因子单增:在寻找下一个质因子时,从前一个开始. #include<iostream&g ...
 - portal商品展示功能逻辑
			
看下接口: 返回值: 门户商品搜索功能的实现: 根据分类id进行搜索,根据关键词进行搜索,并按照一定的顺序排序 业务逻辑: 1.查询分类是否存在. 2.如果分类存在,则递归分类,展示父类商品,子类商品 ...
 - 即时通信系统Openfire分析之一:Openfire与XMPP协议
			
引言 目前互联网产品使用的即时通信协议有这几种:即时信息和空间协议(IMPP).空间和即时信息协议(PRIM).针对即时通讯和空间平衡扩充的进程开始协议SIP(SIMPLE)以及XMPP.PRIM与 ...
 - hdu4699-Editor
			
Sample Input 8 I 2 I -1 I 1 Q 3 L D R Q 2 Sample Output 2 3 发现IDLR四种操作都在光标处发生,且操作完成后光标至多移动1个位置,根据这种“ ...
 - 2017北京国庆刷题Day4 afternoon
			
期望得分:100+100+0=200 实际得分:5+0+0=5 每加入一个数,x的因数位置++ 注意:根号x枚举时,如果x是完全平方数,根号x会重复累计2次,要减去 考场上没减,5分 /(ㄒoㄒ)/~ ...
 - JavaScrip入门笔记(二)
			
使用JS完成表格的隔行换色 新标签的学习 <thead> <tr> <th></th> </tr> </thead> <t ...
 - 一键切图 PS 动作 【收藏】
			
使用方法 一键切图动作.zip 1. 下载动作 2. 打开PS 动作 窗口,导入动作 3. 选中图层后 点击 F2 一键切图 详情看原文链接 原文链接
 - UVA题解一
			
UVA 100 题目描述:经典3n+1问题在\(n \leq 10^6\)已经证明是可行的,现在记\(f[n]\)为从\(n\)开始需要多少步才能到\(1\),给出\(L, R\),问\(f[L], ...
 - 安装 Xamarin for Visual Studio
			
总得来说,Xamarin 有“联网自动安装”和“手动安装”两种方式. 说明:本文涉及得资源链接都是官网的,同时,在 我的网盘 也有相关备份. 现在,我就以 Windows 为例来大概说明……(-=-我 ...