java中属性和变量的区别与final和抽象类

属性和变量的区别

变量必须要有初始值; 属性可以没有初始值;
变量的范围只在当前大括号内有效; 属性是对象在哪里使用就在哪里有效;
属性的作用范围要比变量的大一些

属性和变量

public class study01 {
	public static void main(String[] args) {
		// 这是一个变量
    String name ="王五";
		User u1 = new User();
	}
}
class User{
  // 这是一个属性
  private  String User;
}
字符串是引用类型;引用类型的默认值是null
class User{
  // 这是一个属性
  private  String User;
  User(){
	  System.out.println(User); // 输出null
  }
}

java中使用 final 修饰可以让数据初始化后不被修改

final可以修饰变量;变量的值一旦初始化后就无法被修改

final可以修饰属性,那么JVM无法自动进行初始化,需要自己进行初始化

构造函数结合final初始化属性

package studyDemo9yue;
public class study01 {
	public static void main(String[] args) {
		User u1 = new User("张三");
	}	
}
class User{
  // 这是一个属性; user在初始化后就不能被修改了
  final String user; 
  public User(String user){
      // this.user 表示的是属性; this表示当前这个对象
	  this.user = user;
  }
}

一般情况下,将final修饰的变量称之为常量,或者叫不可变量

final可以修饰方法,这个方法不能够被子类重写。 但是final不可以修饰构造方法

final可以修饰类,这个类就没有子类了。

final可以修饰方法,修饰属性,修饰变量,也可以修饰类

final可以修饰方法中的参数,一旦修饰,参数就无法被修改

不完整的类就是抽象类; 因为类不完整所以无法直接构建对象

abstract class 类名

抽象方法:只有声明,没有实现的方法叫做抽象方法

抽象方法的基本语法: abstract 返回值类型 方法名(参数)
abstract 修饰的方法是抽象方法

如果一个类中含有抽象方法,那么这个类就是抽象类;

如果一个类是抽象类,它的方法不一定是抽象方法;

抽象类无法直接构建对象,但是可以通过子类间接构建对象。

如果抽象类中含有抽象方法,那么子类继承抽象类,需要重写抽象方法,将方法补充完整;

public class study01 {
	public static void main(String[] args) {
		Person22 u1 = new Person22();
    u1.eat();
	}
}

//这是一个抽象类
abstract class Person21 {
  // 这里是一个抽象方法	
	public abstract void eat();
}

//如果抽象类中含有抽象方法,那么子类继承抽象类,需要重写抽象方法
class Person22 extends Person21{
	// 重写抽象方法
	public  void eat() {
		System.out.println("说话");
	}
}

abstract抽象类是不能和关键字 final一起使用的

posted @ 2023-12-26 22:33  何人陪我共长生  阅读(29)  评论(0编辑  收藏  举报