Java学习第五天
Posted 撒天毒的女巫
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java学习第五天相关的知识,希望对你有一定的参考价值。
方法重载
在一个类中定义多个构造方法时,只要每个构造方法的参数类型和参数个数不同即可。
在Java中每个类都至少有一个构造方法,若无定义则系统默认无代码方法体
以下Person类的两种写法效果一样。
1. class Person
2.class Person
public Person()
定义一个对成员变量赋初值的方法
class Person int age; public Person (int X) age = x;
在一个类中如果定义了一个有参的构造方法,最好再定义一个无参的构造方法。
this关键字
1.使用this可明确访问一个类的成员变量,解决与局部变量名称冲突问题。
2.通过this调用成员方法。
3.构造方法是被自动调用的,在程序中不能像调用其他方法一样调用构造方法,但可在一个构造方法中用this([参数1,参数2…])的形式调用其他构造方法。
使用this调用类的构造方法时应注意:
1.只能在构造方法中用this调用其他构造方法,不能再成员方法中使用。
2.在构造方法中,使用this调用构造方法的语句必须位于第一行,且只能出现一次。
3.不能在一个类的两个构造方法中用this互相调用。
垃圾回收:
1.等待java虚拟机进行自动垃圾回收
2.调用System.gc()方法通知java虚拟机立即垃圾回收
finalize()方法可观察对象何时释放
静态变量
"类名.变量名"直接访问
static关键字(用于修饰类的成员)1.成员变量2.成员方法3.代码块等
static不可修饰局部变量
静态方法(“类名.方法名”)
不创建对象的情况下可以调用某个方法
调用静态方法:1.类名.方法2.实例化对象
static修饰的代码块:静态代码块
使用Eclipse运行文件——Java虚拟机加载类——执行该类静态代码块——调用main方法
静态代码块在类第一次使用时才会被加载,并且只加载一次。
类可分为:成员内部类(在Java中允许在一个类内部定义类:外部类),静态内部类,方法内部类
在方法内部类中,可以访问外部类的所有成员。
内部类可以在外部类中被使用,并能访问外部类成员。
若想通过外部类访问内部类,则需通过外部类对象去创建内部类对象。
创建内部类对象的具体语法格式:“外部类名.内部类名 变量名 = new 外部类名().new 内部类名();”
Outer类定义:1.Inner类——show()方法——访问Inner类成员变量num
2.test()方法——创建内部类Inner的实例对象——调用show()方法。
nice!加油!
JAVA学习第五天
面向对象三种特征:继承、封装、多态。
以后开发过程中就是找对象使用,没有对象就创建一个对象。(找对象--建立对象--使用对象---维护对象)。
类和对象的关系:
现实生活中的对象:张山,李四
想要描述就是只要提取对象中的共性内容,对具体进行抽象。
描述:比如这些共性有:姓名、年龄、性别、学习java的功能。
类就是对现实生活中实物的描述。
对象:就是这类事物,实实在在存在的个体。
java中类用class来定义,具体的对象是对应java在堆内存中用new建立的实体。
***成员变量与局部变量:
成员变量作用于整个类中,局部变量作用于函数中或者语句中。
成员变量在堆内存中,因为对象的存在才存在内存中。
局部变量在栈内存中。
===========================================================================================匿名对象使用方法之一:
1、当对象的方法只需要调用一次时候可以使用匿名(没有名字)对象来完成这样写比较简化。
如果对一个对象进行多个成员调用,必须给这个对象起名字。
匿名对象使用方式二:
可以将匿名对象作为实际参数进行传递。
封装:
封装:是指隐藏对象的属性和实现细节,仅仅对外提供公共访问方式。
好处:
将变化隔离、便于使用、提高重用性、提高安全性
封装的原则:
将不需要对外提供的内容隐藏起来、把属性都隐藏,提供公共访问对其访问。
封装private:私有权限修饰符:用于修饰类中的成员(成员变量、成员函数)
私有只有在本类中有效。
***注意:私有仅仅是封装的一种表现形式。
==========================================================================================
构造函数:
特点:
函数名与类名一致;不用定义还回值类型;不可以写return语句;
class test{
test(){
System.out.println("person run");
}
}
class test1{
public static void main(String[] args){
test t=new test();
}
}
##对象一建立就会调用与之对应的构造函数。构造函数的作用:可以用于给对象进行初始化。
构造函数的小细节:
当一个类中没有定义构造函数的时候,那么系统会默认给该类加入一个空参数的构造函数;
构造函数与一般函数在写法上有不同。
在运行上也有不同。
构造函数在对象一建立就运行给对象初始化
而一般方法是对象调用才执行的,给对象添加对象具备的功能。
一个对象建立构造函数值运行一次
而一般方法可以被该对象调用多次
什么时候需要定义构造函数呢?
档分析事物时,该事物存在具备一些特性或者行为,那么将这些内容定义在构造函数中
===========================================================================================
重载:
class test{
private String name;
private int age;
test(){
System.out.println("A: name="+name+",,age="+age);
}
test(String n){
name=n;
System.out.println("B: name="+name+",,age="+age);
}
public void setName(string n){
name=n;
}
public String getName(){
return name}
test(String n,int a){
name=n;
age=a;
System.out.println("C: name="+name+",,age="+age);
}}
class test1{
public static void main(String[] args){
test t=new test();
test t1=new test("LISI");
t1.setName("libushi")
test t2=new test("lisi",10);
}
}
输出结果:
A: name=null,,age=0
B: name=LISI,,age=0
C: name=lisi,,age=10
构造代码块:作用是给对象进行初始化,对象一建立就运行而且优先于构造函数执行。
与构造函数的区别:
构造代码块是给所有对象进行统一初始化。
而构造函数是给对应的对象进行初始化
构造代码块代码中定义的是不同对象的共性的初始化内容。
===========================================================================================
this关键字使用:
class test{
private String name;
private int age;
test(){
System.out.println("A: name="+name+",,age="+age);
}
test(String name){
this.name=name; /*this看上去是用于区分局部变量和成员变量同名的情况*/
System.out.println("B: name="+name+",,age="+age);
}
test(String n,int a){
name=n;
age=a;
System.out.println("C: name="+name+",,age="+age);
}}
class test1{
public static void main(String[] args){
test t=new test();
test t1=new test("LISI");
test t2=new test("lisi",10);
}
}
this: 代表本类的对象,到底代表哪个呢?
this代表 它所在对象所属 对象的引用:简单的说哪个对象在调用this所在的函数,this就代表哪个对象。
this用于构造函数之间互相调用。
以上是关于Java学习第五天的主要内容,如果未能解决你的问题,请参考以下文章