如何学好Java面向对象?

2021/6/9 22:24:03

本文主要是介绍如何学好Java面向对象?,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

第二章 面向对象进阶

1.成员变量
在Java中,变量可以分为成员变量和局部变量,成员变量是在类范围内定义的变量,局部变量是在方法中定义的变量。
Java中的成员变量分为类属性和实例属性两种,定义属性时没有static修饰符修饰的就是实例属性。其中,类属性从类被加载开始存在,直到系统完全销毁该类,类属性的作用域与该类的生命周期相同。而实例属性则从类的实例被创建起开始存在,直到系统销毁该实例,实例属性的作用域与其对应的实例的生命周期相同。成员变量语法如下:

[<修饰符>][static][final]<变量类型><变量名>

static:表示一个类的成员变量,即静态成员变量
final:表示一个常量
在成员变量中还分实例成员变量和类变量(静态成员变量),二者所作用的范围不同。
注意:Java中虽然允许通过实例来访问类属性,但其可读性和明确性较低,所以在所用类属性时,应使用“类名+点操作符+类变量名”的方式。

2.this关键字
java提供了一个this关键字,this关键字总是指向调用该方法的对象。其作用是让类中的一个方法访问该类中的另一个方法或实例成员变量。
事例:定义一个Hero类,如何完成Here对象run()方法需要调用它的jump()方法?代码如下:

public class Hero{
 public void jump(){
 System.out.println("---英雄遇到了障碍需要跳过去---");
 }
 public void run(){
SYstem.out.println("---执行run()方法英雄正在奔跑---");
Hero hero=new Hero():
System.out.println("her对象已经被创建内存地址为:"+hero.hashCode()+",它将实行jump方法");
hero.jump();
}
}
public class TestHero{
public static void main {String[]args){
Hero hero=new Hero();
System.out.println("hero对象已经被创建内存地址为:"+hero.hashCode()+",它将实行run()方法");
hero.run();
}
}

注意:1.在方法中访问类中的实例成员变量无需使用this前缀,如果方法中的一个局部变量和实例变量同名,但程序又需要在该方法中访问该变量,则必须使用this前缀。
2.省略this前缀只是一种假象,虽然程序员省略了调用jump()方法之前的this,但实际此this依然存在。

3.隐藏和封装
封装是面向对象的三大特征之一,它指的是将对象的状态信息隐藏在对象内部,不允许外部程序直接访问对象内部信息,而是通过该类所提供的方法属实现对内部信息的操作和访问。其作用如下:
1.隐藏类的实现细节;
2.让使用者只能通过事先预定的方法访问数据,从而可以在该方法中加入控制逻辑,限制对属性的不合理访问;
3.可进行数据检查,从而有利于保证对象信息的完整性;
4.便于修改,提高代码的可维护性;

怎样实现良好的封装:
1.隐藏对象的属性和实现细节,不允许外部直接访问。
2.暴露出方法,让方法控制对这些属性进行安全的访问和操作。

4.static关键字
静态成员变量是被static关键字修饰的成员变量,静态成员变量属于其所在类,被类中的所有实例共享,静态成员变量可通过类直接访问。
被static修饰的方法称静态方法。静态方法也可以通过类名直接访问。在使用静态方式时需要注意,静态方法中不能访问非静态的成员。
静态方法在类加载后,虽然在内存中已经分配了内存空间,但只有显示的调用静态方法,该方法才会被执行。如果需要在类加载时执行某一操作,则可以使用静态代码块。
事例:创建Book对象,深入了解Java程序启动class文件被读取时,类加载和静态代码块的执行过程,以及static()方法的调用执行顺序。代码如下:

public class Book{
public static int booksum=0;
static{
print();
System.out.println("this is static block"):
}
public Book(){
System.out.println("this is Book"s contructor-");
booksum+=1;
}
public static void println(){
System.out.println("this is static method-"):
}
public static void main(String[]args){
Book book=new Bok();
}
}

总结:
1.成员变量和局部变量的区别:
(1)在类中的位置不同
成员变量:类中,方法外
局部变量:方法中或者方法声明上(形式参数)
(2)作用范围不一样
成员变量:类中
局部变量:方法中
(3)初始值不同
成员变量:有默认值
局部变量:没有默认值,必须定义,赋值,最后使用
(4)在内存中的位置不同
成员变量:堆内存
局部变量:栈内存
(5)生命周期不同
成员变量:随着对象的创建而存在,随着对象的消失
局部变量:随着方法的调用而存在,随着方法的调用完毕而消失
2.this关键字
this关键字总是指向调用该方法的对象。使用成员方法和成员属性时,可以使用”this.方法(参数列表)“和"this.成员属性”,分别调用当前对象的方法和成员属性。
3.static关键字
类的成员变量包含静态成员变量和实例变量。静态成员变量是被static关键字修饰的成员变量,静态成员变量属于其所在类,被类中的所有实例共享,静态成员变量可通过类直接访问,也可通过类的实例访问。



这篇关于如何学好Java面向对象?的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程