最近把自己比较犯晕的几个小的JAVA知识点整理出来,一是回顾一下JAVA的知识,而是方式以后忘记
1、构造函数的使用
类有哦一个特殊的成员方法叫做构造方法,它的作用是创建对象并初始化成员变量。在创建对象时,会自动调用类的构造方法。
JAVA中构造方法必须与该类具有相同的名字,并且没有方法的返回类型(包括没有void)。另外,构造方法一般都应用public 类型来说明,这样才能在程序的任意位置创建类的实例---对象。
每个类至少有一个构造方法。如果不写一个构造方法,JAVA将提供一个默认的,该构造方法没有参数,而且方法体为空。
注意:如果一个类中已经定义了构造方法则系统不再提供默认的构造方法
例子:
package test01;
public class Hello {
int id;
String username;
String password;
public Hello(int id)
{
this.id = id;
System.out.println("构造函数1:id="+id);
}
public Hello(int i,String username,String password)
{
//此时,i这个局部变量没有和成员变量重名,所以不用指定
this.username = username;
this.password = password;
System.out.println("构造函数2:username="+username+" password="+password);
}
public Hello()
{
//用this调用上面的构造函数,必须上面有定义下面才能使用。
this(5,"hualang","123456");
}
public static void main(String args[])
{
Hello hello1 = new Hello(3);
Hello hello2 = new Hello(4,"loulijun","666666");
Hello hello3 = new Hello();
}
}
输出结果:
构造函数1:id=3
构造函数2:username=loulijun password=666666
构造函数2:username=hualang password=123456
2、super,this的区别及使用
JAVA的this关键字只能用于方法体内,JAVA虚拟机(JVM)会给这个对象分配一个引用紫森的指针,这个指针的名字就是this,因此,this只能在类中的非静态方法中使用,静态方法和静态的代码块中不能使用this,比如main方法中是不能使用this的,并且this只和特定的对象关联,而不和类关联,同一个类中的的不同对象有不同的this。
注意:函数参数或者函数中的局部变量和成员变量同名的话,成员变量被屏蔽,此时要访问成员变量则需要使用
"this.成员变量"的方式引用成员成员变量,如果没有同名的情况下,可以直接使用。
package test01;
public class ThisTest {
private int number;
private String username;
private String password;
final private int x = 6;
public ThisTest(int number)
{
this.number = number;
}
public ThisTest(int number, String username, String password)
{
//成员变量和参数同名,成员变量被屏蔽,用“this.成员变量”的方式访问成员变量
this.number = number;
this.username = username;
this.password = password;
}
public ThisTest()
{
this(1,"通过this调用另一个构造方法(3个参数)","111111");
}
public ThisTest(String name)
{
this(2,name,"通过this调用另一个构造方法");
}
public void test()
{
//局部变量与成员变量同名,成员变量被屏蔽,用"this.成员变量"的方式访问成员变量
int x;
x = this.x +6;
System.out.println("局部变量x="+x);
System.out.println("成员变量this.x="+this.x);
}
public void showMessage(ThisTest t)
{
System.out.println("-----------------------");
System.out.println(t.number);
System.out.println(t.username);
System.out.println(t.password);
System.out.println("-----------------------");
test();//可以使用this.test()调用
}
public static void main(String args[])
{
ThisTest t1 = new ThisTest();
ThisTest t2 = new ThisTest("loulijun");
t1.showMessage(t1);
t2.showMessage(t2);
}
}
运行结果如下:
-----------------------
1
通过this调用另一个构造方法(3个参数)
111111
-----------------------
局部变量x=12
成员变量this.x=6
-----------------------
2
loulijun
通过this调用另一个构造方法
-----------------------
局部变量x=12
成员变量this.x=6
运行结果分析:
main函数中首先创建两个ThisTest对象,t1、t2,然后调用用着两个对象调用showMessage()方法,并且将自己作为参数传递给showMessage(),比如t1.showMessage(t1):这个方法会以这个对象调用number,username,password,以及test()方法,从而打印出数据
下面是super的使用及说明
super和this作用类似,使被屏蔽的成员变量或者成员方法课件,或者说用来引用被屏蔽的成员变量和成员方法。
不过super是用在子类中,目的是访问直接父类中被屏蔽的成员,注意是直接父类(类之上最近的超类)。
1、在使用super的时候,一般尽可能的使用private私有化
2、子类构造方法调用父类的构造方法一般用super(参数列表)的方式调用,参数不是必须的。同时还要注意,super(参数列表)这条语句只能用在子类构造方法体中的第一行
3、当子类方法中的局部变量或者子类的成员变量与父类成员变量同名时,也就是子类局部变量覆盖父类成员变量时,用
"super.成员变量名"来引用父类的成员变量。当然,如果父类的成员变量没有被覆盖,也可以用"super.成员变量名"来引用父类成员变量,不过这是不必要的
4、当子类的成员方法覆盖了父类的成员方法时,也就是子类和父类有完全相同的方法定义(但方法体可以不同),此时,用"super.方法名(参数列表)"的方式访问父类的方法
父类Father.java
package test01;
public class Father {
public String v = "父类Father";
public String x = "父类的成员变量";
public Father()
{
System.out.println("Father无参构造方法被调用");
}
public Father(String v)
{
this.v = "Father有参构造方法被调用";
}
public void showMessage()
{
System.out.println("Father的showMessage()方法被调用");
}
public static void main(String args[])
{
//自动生成存根方法
}
}
子类Son.java
package test01;
public class Son extends Father {
public String v = "子类Son";
public Son()
{
//调用父类的构造方法,且只能放在第一行
super();
System.out.println("Son的无参构造方法被调用");
}
public Son(String str)
{
super(str);
System.out.println("Son的有参构造方法被调用");
}
//覆盖了父类的成员方法showMessage()
public void showMessage()
{
System.out.println("Son的showMessage()方法被调用");
}
public void test()
{
String v = "局部变量v覆盖了成员变量v和超类变量v";
System.out.println("---------------------------");
System.out.println("子类局部变量v="+v);
System.out.println("子类成员变量v="+this.v);
System.out.println("父类成员变量v="+super.v);
System.out.println("子类继承而来的超类成员变量x="+x);
System.out.println("超类成员变量x="+super.x);
System.out.println("---------------------------");
showMessage();//调用子类的showMessage()方法
this.showMessage();//调用子类的showMessage()方法
super.showMessage();//调用父类的showMessage()方法
}
public static void main(String args[])
{
Son son =new Son();
son.test();
}
}
运行Son.java,结果如下:
Father无参构造方法被调用
Son的无参构造方法被调用
---------------------------
子类局部变量v=局部变量v覆盖了成员变量v和超类变量v
子类成员变量v=子类Son
父类成员变量v=父类Father
子类继承而来的超类成员变量x=父类的成员变量
超类成员变量x=父类的成员变量
---------------------------
Son的showMessage()方法被调用
Son的showMessage()方法被调用
Father的showMessage()方法被调用
分享到:
相关推荐
根据给定的文件信息,这里将对Java知识点进行汇总,尤其关注Java Web架构及原理方面的知识。 首先,从【标题】:“java知识点汇总” 和【描述】:“内容较杂,有java初中高级知识点,也有Java web架构及原理”来看...
最近的java 面试知识点, 比较全的java基础知识面试知识,linux
java知识点积累
91.java知识点补充.zip91.java知识点补充.zip91.java知识点补充.zip91.java知识点补充.zip91.java知识点补充.zip91.java知识点补充.zip91.java知识点补充.zip91.java知识点补充.zip91.java知识点补充.zip91.java知识...
Java是目前企业开发中最常用的编程语言之一,Java面试知识点涵盖了Java语言的方方面面,包括Java基础知识、Java高级知识、Java设计模式、Java框架等等。以下是Java核心面试知识点的整理。 一、JVM JVM(Java ...
java核心知识点整理,面试很有用 Java核心知识点2.JVM JVM 是可运行 Java 代码的假想计算机 ,包括一套字节码指令集、一组寄存器、一个栈、 一个垃圾回收,堆 和 一个存储方法域。JVM 是运行在操作系统之上的,它...
Java基础知识点和答案Java基础知识点和答案Java基础知识点和答案Java基础知识点和答案Java基础知识点和答案Java基础知识点和答案Java基础知识点和答案Java基础知识点和答案Java基础知识点和答案Java基础知识点和答案...
### 学习Android所需Java知识点概述 为了更好地掌握Android开发技术,深入了解并熟练掌握Java语言是必不可少的基础之一。本文将根据“学习android需要的Java知识点列表”中的内容,详细阐述学习Android开发过程中...
这份"java知识点总结思维导图(xmind)"是为帮助学习者系统性地理解和掌握Java核心技术而精心整理的资料。思维导图作为一种有效的学习工具,能够帮助我们更好地组织和记忆信息,提高学习效率。 首先,让我们从基础...
java基础知识点,面试宝典,最适合你的java面试知识点,所学java知识点总结
本资源是【Java 知识图谱】(高清、超详细),包含Java的全部基础知识点、Java高端开发知识点,Java常用开发框架(Spring、Springboot、SpringMVC、Mybatis等)以及Java web开发及相关数据库的知识点汇总,高并发、...
JAVA面试核心知识点整理 本文档旨在为Java开发者提供一个 hệ thống的面试知识点整理,涵盖了Java的核心概念、JVM的工作原理、Java编程语言的基本语法和高级特性等多方面的知识点。下面是对该文档的详细解读。 ...
以下是对这些知识点的详细说明: 一、Java概述: Java是由Sun Microsystems开发的一种跨平台的编程语言,它具有“一次编写,到处运行”的特性,通过Java虚拟机(JVM)实现平台无关性。Java有丰富的类库支持,适用于...
《JAVA核心知识点总结》 Java作为一款广泛应用的编程语言,其核心知识点对于开发者来说至关重要。本资料旨在为准备面试或者系统学习Java的人员提供一个全面的复习框架。以下是对其中部分关键知识点的详细阐述: **...
Java知识点总结2019,其中包括了基础、面向对象、api部分、集合类、多线程、GUI、Jdbc、网络编程、io流。
本文将深入探讨在"JAVA核心知识点整理"中涉及的关键概念和技术。 一、Java基础 Java的基础知识包括语法、面向对象特性(封装、继承、多态)、异常处理、输入/输出流以及集合框架。了解基本类型、类、接口、包的概念...
java知识点思维导图.xmind
学习Android所需的Java知识点列表
java核心知识点从0到1全包括 JVM 所有知识点技术点 JAVA集合 JAVA多线程并发 JAVA基础 SPRING原理 微服务 等等 java核心知识点从0到1全包括 JVM 所有知识点技术点 JAVA集合 JAVA多线程并发 JAVA基础 SPRING原理 ...
离线模式下的Java知识点下载,可在线进行代码编写,直观地看出代码运行结果