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一起使用的
java中属性和变量的区别与final和抽象类的更多相关文章
- Java中标识符和变量的区别
1.标识符 在JAVA的组成部分中包括了对包.类.方法.变量等的起名,这些名字是要有一定的规则的: 标识符可以包含数字.字母.$._,但是不能以数字开头: 关键字不能用作标识符: 标识符是大小写敏感的 ...
- Java中this与super的区别【6】
若有不正之处,请多多谅解并欢迎批评指正,不甚感激.请尊重作者劳动成果: 本文原创作者:pipi-changing本文原创出处:http://www.cnblogs.com/pipi-changing/ ...
- java中extends与implements的区别
学了java很久了,久不用之后给同学解决一个java问题的时候,就卡在这个标题上了. 下面是java中extends与implements的区别: 1. 在类的声明中,通过关键字extends来创建一 ...
- Java中Comparable和Comparator接口区别分析
Java中Comparable和Comparator接口区别分析 来源:码农网 | 时间:2015-03-16 10:25:20 | 阅读数:8902 [导读] 本文要来详细分析一下Java中Comp ...
- Java中堆和栈的区别(转)
栈与堆都是Java用来在Ram中存放数据的地方.与C++不同,Java自动管理栈和堆,程序员不能直接地设置栈或堆. Java的堆是一个运行时数据区,类的对象从中分配空间.这些对象通过new. ...
- Java中Long与long的区别(转)
Java中Long与long的区别(转) [本文转载自:http://www.cnblogs.com/bluestorm/archive/2012/04/22/2464739.html] 转载请联系原 ...
- java中堆和堆栈的区别
java中堆和堆栈的区别(一) 1.栈(stack)与堆(heap)都是Java用来在Ram中存放数据的地方.与C++不同,Java自动管理栈和堆,程序员不能直接地设置栈或堆. 2. 栈的优势是,存取 ...
- java 标准输出与标准错误 out与 err 区别 用法 联系 java中的out与err区别 System.out和System.err的区别 System.out.println和System.err.println的区别 Java重定向System.out和System.err
本文关键词: java 标准输出与标准错误 out与 err 区别 用法 联系 java中的out与err区别 System.out和System.err的区别 System.out.pri ...
- Java学习笔记十五:Java中的成员变量和局部变量
Java中的成员变量和局部变量 一:成员变量: 成员变量在类中定义,用来描述对象将要有什么 成员变量可以被本类的方法使用,也可以被其他类的方法使用,成员变量的作用域在整个类内部都是可见的 二:局部变量 ...
- Java中Set Map List 的区别
java中set map list的区别: 都是集合接口 简要说明 set --其中的值不允许重复,无序的数据结构 list --其中的值允许重复,因为其为有序的数据结构 map--成对的数据结构 ...
随机推荐
- Spring的IOC容器创建过程深入剖析
前言 本次对于Spring的IOC容器的创建过程是基于其源码进行研究分析的,主要涉及BeanFactory的创建过程,Bean的解析与注册过程,Bean实例化的过程以及诸如ClassPathXmlAp ...
- Python数据存储之shelve和dbm
一.shelve 和 dbm 的介绍 shelve 和 dbm 都是 python 自带的数据库管理模块,可以用于持久化存储和检索 python 中的对象. 虽然这两个模块的本质都是建立 key-va ...
- canvas(三)绘制矩形
1.绘制矩形轨迹 相关语法:ctx.rect(x,y,width,height),根据传入的参数(起始坐标和宽高)用来绘制一个矩形轨迹 注意:ctx.rect()和ctx.lineTo()绘制的都是轨 ...
- datagridview点击列头对当前列进行排序的功能无效
DataGridView 的默认行为是支持通过单击列头对列进行排序,但在以下情况下可能会取消该功能或无法使用: 1. 绑定的数据源不支持排序 如果 DataGridView 的数据源是绑定到一个不支持 ...
- QPushButton长度固定,不随文字变化
QPushButton不随text长度变化 设置SizePolicy中的水平策略 没有设置为 忽略
- Vuex 面试题(2023-09-13更新)
谈谈你对 Vuex 的理解 什么是 Vuex? vuex 是 Vue 应用程序开发的状态管理插件,它采用集中式存储,管理应用的所有组件的状态 Vuex 解决了什么问题? 多个组件依赖于同一状态时,多层 ...
- 1.猿人学web爬虫攻防第一题 js混淆源码乱码
题目链接:http://match.yuanrenxue.com/match/1 1.首先我们打开F12开发者工具,点击..... 我们可以看到在请求中有m的加密参数! 2.根据题目js混淆,我们寻找 ...
- Shadow DOM 及 Custom Elements
今天发现 shadow DOM 和 自定义元素,这两个东西和 molecule 简直是同出而异名. 我得好好推敲一下,如果 shadow dom 确实能达到目的且新款浏览器都支持,molecule 就 ...
- 2024年1月Java项目开发指南2:项目设计
确定软件架构 1.前端用什么技术,什么框架,什么版本 2.后端用什么技术,什么框架,什么版本 3.用些什么软件,软件版本? 比如: 前端:vue3 + Element-Plus + Axios 后端: ...
- alpine-jdk17
# 指定基础镜像 FROM amd64/eclipse-temurin:17.0.5_8-jdk-alpine MAINTAINER "muzhi" RUN sed -i 's/d ...