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. ...
随机推荐
- c++多态性详解(转)
什么是多态? 多态一词最初来源于希腊语,意思是具有多种形式或形态的情形,当然这只是字面意思,它在C++语言中多态有着更广泛的含义. 这要先从对象的类型说起!对象的类型有两种: 实例:Derived1类 ...
- Codeforces Round #424 (Div. 2, rated, based on VK Cup Finals) A 水 B stl C stl D 暴力 E 树状数组
A. Unimodal Array time limit per test 1 second memory limit per test 256 megabytes input standard in ...
- SGU179 Brackets light
179. Brackets light time limit per test: 0.25 sec. memory limit per test: 131072 KB input: standard ...
- Drivers Dissatisfaction 最小生成树+LCA
题意:给一张n个点m条边的连通图,每条边(ai,bi)有一个权值wi和费用ci, 表示这条边每降低1的权值需要ci的花费.现在一共有S费用可以用来降低某些边的权值 (可以降到负数),求图中的一棵权值和 ...
- spoj 694 705 不相同的子串的个数
http://www.spoj.com/problems/SUBST1/ SUBST1 - New Distinct Substrings #suffix-array-8 Given a string ...
- excel自带频率分析
sklearn实战-乳腺癌细胞数据挖掘(博客主亲自录制视频教程) https://study.163.com/course/introduction.htm?courseId=1005269003&a ...
- 使用L2正则化和平均滑动模型的LeNet-5MNIST手写数字识别模型
使用L2正则化和平均滑动模型的LeNet-5MNIST手写数字识别模型 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考文献Tensorflow实战Google深度学习框架 实验平台: T ...
- Spring集成quartz集群配置总结
1.spring-quartz.xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE be ...
- thinkphp学习,蛋疼啊~新公司要弄这个。。。
common/function.php 看里面函数大全,啥玩意都有 Tpl中的是模板文件,action中是控制类,Model中有action用到的一些东西,例: class IndexAction e ...
- XMLHttpRequest 整理
看了SF 上的一篇文章感触颇深:你真的会使用XMLHttpRequest吗? 在这我写上我读后的笔记: <!DOCTYPE html> <html lang="en&quo ...