java学习
1.this关键字
this关键字可以代表当前对象的引用。它可以在类的方法中使用,用于引用调用该方法的对象。通过this关键字,可以访问类的成员变量和方法,以及调用其他构造函数。
举一个实例来学习一下this关键字的作用。
比如,我们先定义一个简单的学生对象:
public class Student {
public String name;
public int chinese_score;
public void demo(int chinese_socre)
{
if(this.chinese_score>chinese_score)
{
System.out.println("成绩合格");
}
else
{
System.out.println("成绩不合格");
}
}
}
代码中的demo方法用于判断学生语文成绩是否合格,而图中的this的作用在于引用当前学生对象的变量,如果不加this关键字,就会因为就近原则,方法里面的chinese_score变量都会变成我们传进去的参数值,这样就没有比较的意义。
this关键字在实际中的作用:当对象成员变量与方法内部变量的名称一样时,用于解决访问冲突的问题。
2.面向对象之封装
首先我们按照是什么,为什么,怎么办的步骤来学习一下封装。
是什么:
封装是面向对象编程中的一个核心概念,它指的是将数据和方法捆绑在一起,并限制对数据的直接访问和操作,而通过公共的方法来实现对数据的访问和修改。在Java中,封装通过使用访问修饰符来控制类的成员的访问权限,从而隐藏对象的内部细节,使得对象更加安全和可靠。
为什么:
封装的目的是实现数据的隐藏和保护,以及降低代码的耦合性。通过封装,可以隐藏类的内部细节,使得对象的实现细节对外部用户不可见,从而提高了代码的安全性和可维护性。封装还可以防止直接对类的成员变量进行不合理的修改,使得对象的状态更加可控,减少了代码出错的可能性。
比如,我们知道人的体重不可能为负数,也不可能非常小,那么如果我们没有对对象进行封装,用户就可以通过访问成员变量将它的值修改成一个不合理的值,这会导致我们的程序出错,所以我们要对数据进行封装。
如果我们将对象的成员变量的访问改为private,那么就可以很好的防止用户随意修改对象的成员变量。
怎么办:
1.将类的成员变量声明为私有的(private),这样外部类就无法直接访问这些变量。
2.提供公共的方法(getter和setter方法)来访问和修改私有变量的值。通常,getter方法用于获取变量的值,setter方法用于修改变量的值。
3.在公共方法中,可以添加一些逻辑判断和控制,以确保对数据的访问和修改是合理和安全的。
1.改变成员变量的访问
2.因为将成员变量的访问私有化,所以我们想要改变成员变量只能通过set方法去修改,而我们在调用这个set方法时,set方法会判断你给予的值是否合理来考虑要不要修改。
3.因为我们不能直接访问对象的成员变量,所以我们想要得到他们的值还需要公开一个get方法来返回你要获取的成员变量值。
3.面向对象之继承
是什么:
继承是面向对象编程中的一个重要概念,它允许一个类(称为子类或派生类)基于另一个类(称为父类或基类)来构建自己的特性。子类可以继承父类的属性和方法,同时可以添加自己的新属性和方法,也可以重写父类的方法。在Java中,使用关键字extends来实现类的继承。
为什么:
继承的主要目的是实现代码重用和扩展性。通过继承,子类可以重用父类的代码,不需要重新编写相同的代码。此外,通过继承,可以实现类的层次结构,使得代码更加结构化和易于理解,也使类与类之间建立了练习。
怎么办:
通过以下步骤:
1.使用关键字extends来声明一个类继承另一个类。
2.子类可以继承父类的非私有成员(属性和方法),但不能继承父类的构造方法。
3.子类可以通过调用super关键字来调用父类的构造方法和方法,以便重用父类的功能。
4.子类可以通过重写(覆盖)父类的方法来实现自己的特殊行为。要重写一个方法,子类需要定义一个与父类方法签名相同的方法,并使用@Override
注解来标识。
下面是一个完成继承操作的格式
class A {//A为父类
...
}
class B extends A{//B类为子类,继承A类
...
}
注意:继承只支持单继承,不支持多继承,例如:
但是可以多层继承,例如:
public class A extends B{
}
public class C extends A{
}
方法重写:
如何重写?
子类写了一个方法名称、形参列表与某个父类相同的方法,可以将父类的方法覆盖掉,会优先执行子类重写的方法。
示例如下: