首页 > 编程语言 >java中属性和变量的区别与final和抽象类

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

时间:2023-12-26 22:45:37浏览次数:49  
标签:java class final User 修饰 抽象类 public

属性和变量的区别

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

属性和变量

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一起使用的

标签:java,class,final,User,修饰,抽象类,public
From: https://www.cnblogs.com/ishoulgodo/p/17929536.html

相关文章

  • 无涯教程-Java9 - @Deprecated增强
    @Deprecated注释是在Java5版本中引入的。用@Deprecated注释的程序元素表示,由于以下任何原因,不建议使用它-其用法可能会导致错误。它在将来的版本中可能不被兼容。它在将来的版本中可能会被删除。一个更好,更高效的替代方法取代了它。每当使用不推荐使用的元素时,编译器都会......
  • java 8 的新特性(三)
    java8新的日期时间APIJava8引入了一个新的日期时间API,也称为java.timeAPI,以替代旧的java.util.Date和java.util.Calendar类。这个新API提供了更清晰、更强大和更易于使用的日期和时间功能。Java8的日期时间API包括以下部分:日期和时间类型:包括LocalDate(日期),LocalTime(时间),LocalDa......
  • java异常处理
    异常:指的是程序在执行过程中,出现的非正常的情况,最终会导致JVM的非正常停止。注意:在Java等面向对象的编程语言中,异常本身是一个类,产生异常就是创建异常对象并抛出了一个异常对象。Java处理异常的方式是中断处理异常机制其实是帮助我们找到程序中的问题,异常的根类是java.lang.......
  • 创建一个双模式跨运行时的 JavaScript 包
    本文将指导你发布双模式、跨运行时的JavaScript包。了解如何创建与ESM和CommonJS以及Node.js、Deno和浏览器等不同运行时兼容的库。随着JavaScript开发的不断发展,人们越来越需要能在多种环境中运行的强大依赖包。在本文中,我们将探讨如何发布跨运行时、双模式的JavaScr......
  • Java第十八课_线程和网络
    1.线程线程的休眠publicstaticvoidmain(String[]args){//线程的休眠//第一种方式(不推荐):try{Thread.sleep(3000);//毫秒}catch(InterruptedExceptione){e.printStackTrace();}......
  • 无涯教程-Java9 - Stream API增强
    Java9改进的StreamAPI添加了一些便利的方法,使流处理更容易,并使用收集器编写复杂的查询。Java9为Stream新增了几个方法:dropWhile、takeWhile、ofNullable,为iterate方法新增了一个重载方法。takeWhile语法defaultStream<T>takeWhile(Predicate<?superT>predic......
  • Java 日期转换运算工具类
    ​  参考文档:Java日期转换运算工具类-CJavaPy1、Date常用方法java.util.Date 是Java中表示日期和时间的一个基础类。但随着时间的推移,许多其方法被标记为过时,并被推荐在Java8引入的 java.time 包中的新类替代。但是,Date仍然在很多旧的代码库中广泛使用,并在与某......
  • stream的优化:java封装的拆箱与装箱的弊端
    authors.stream().map(author->author.getAge).map(age->age+10)//Stream<Integer>.filter(age>18)//Stream<Integer>.foreach(System.out::println);上述是一个简单的stream流的使用,当我们拆开第二个map,或者filter的时候会发现,传入和传出的参数都是Intege......
  • java基础语法API之GUI图形化界面1
    一:概述虽然现在在开发中,前后端交互,用户所看到的界面都是前端实现的,但是java自身的图形化界面,对于java学习初学者还是需要了解的。对于开发是有利的。二:具体说明<1>GUI介绍java中为GUI相关的API在java.awt包和java.swing包中。java.awtawt是这三个单词首字母的缩写,翻译过来是抽象窗......
  • java中的方法引用
    方法引用是对lambda的进一步简化,如果方法体只有一个方法调用的话,可以直接采用对象名(类名)::方法名的格式(想起来了C++的一些语法)一个例子:上面是lambda的一种写法,下面是方法引用的改进int[]arr={-1,2,3,4,5,6};Arrays.stream(arr).forEach(a->System.out.println(a));......