Java study notes (10)-this, construction code block, local code, anonymous object, object-oriented features

this

除了静态方法和静态变量其他的都需要通过对象来访问。
this指代的是当前的对象,灵活的表现方式。
this可以为对象属性赋值。
可以调用当前类的其他方法。
Java支持this语句调用当前类的其他构造方法,this语句必须放在首行。
this可以代表当前对象,通过return返回。

Structure code block

用{ }括起来的东西。用来对类中的属性初始化。
类的内部,方法的外边。
当新创建的对象为空时,构造代码块的初始值即为类中的各属性的值。执行一次。
无法通过对象调用,只能自己调用自己。
每创建一次对象,该代码块就执行一次。
构造代码块在无参构造函数前执行。
构造代码块在一个类中可以出现多次,但是没有意义,只需要一次就行了。
class Student{
    
    
 
 String name;
 int id;
 int age;
 
 {
    
    //构造代码块
  this.age=10;
  this.name="123";
 }
}

Local code block

局部代码块的格式为
{
	代码块;
}
1.局部代码块的位置在方法的内部,或语句内部。
2.局部代码块加不加不会对结果有影响。
3.作用:局部代码块的作用在于作用域,将变量限制在了代码块中。
	即可以限制变量的生命周期。不影响程序的执行流程。
4.一旦代码执行完,则该变量会立马被释放,提高内存的使用率。

Anonymous object

对象没有对象名。
new class();//创建一个对象 匿名对象 没有对象名
匿名对象的使用
new class().fangfa();
new Student().equals(stu);
	1.可以通过匿名对象来获取对象的属性和方法。
	2.因为匿名对象没有变量名,在使用一次后无法找到该对象,因此只能使用一次。
	3.匿名对象可以用来给对象传值。
	4.匿名对象可以用return返回。
	5.如果想要堆内存中的对象尽快被回收释放,可以让 引用 = null;堆内存中的对象没有指向的时候可以被快速释放。
	6.对于对象变量做常量的说法来说,在常量的地址值不发生变化,但是堆内存中的数据可以发生变化。
		final Student stu = new Student();
	 stu = new Student();//错误的写法,因为引用变量为常量,地址值不可改变。
	 stu.age=10;
	 stu.age=9;

Object-oriented features

	1。万物皆可对象
	2。使用淘宝电商的例子来说明
	3.面向对象的三大特征
*封装*
	Java开发规范,属性私有化,提供公开的操作方法。get \set 方法。
	private修饰的属性只能在本类中访问,在初始化值时可以通过含参构造方法来进行。
	当私有化的属性不能在外面查看或修改时,可以通过创建一个方法来返回它的大小。
	封装的优点:提高了程序的复用性;将属性隐藏,提高了项目的安全性;提高了可读性。
*继承*
	提高了代码的复用性。
	Java仅支持单继承:一个子类只能有一个父类,一个父类可以有多个子类。
		 	单继承复用性较差,但方法调用不会产生混淆,更加单调直接明了。
		 	多继承在进行调用时产生混乱,对于多重继承的效果不佳。
		 	@overrite 注解,表示该方法是重写的方法。
		 	@overload 注解,表示该方法是重载的方法。
	Java支持多重继承,即子类的父类也有父类,父类的父类也有父类。
	Java中子类不可以调用父类的构造方法。
	子类不可以调用父类的私有的属性和方法。
*多态*
	多种形态,编译时多态和运行时多态。两种多态的自由组合可以使得程序千变万化。
		编译时多态:
		1.方法重载(编译器根据方法的参数个数和类型来确定调用的具体方法)
		2.方法重载在编译期绑定了调用的方法;
		运行时多态
		1.方法重写
		2.向上造型 父类的对象名可以用子类来创建,

super

	是一个关键字,代表父类的对象,是一个虚拟的对象。可以不在父类调用父类的私有属性。
	程序默认帮我们调用父类的无参构造。
	当在子类的无参构造函数中加入super时,可以给写super(父类有参构造的参数);

Guess you like

Origin blog.csdn.net/qq_42351519/article/details/111085274