当前位置:网站首页 > Java基础 > 正文

java八大基础属性



面向对象(Object Oriented)

一 基本概念

基本思想:从现实世界中客观存在的事物出发来构造软件系统,并在系统构造中尽可能运用人类的自然思维方式。

面向对象的两个重要概念:

类:用于描述同一类型的对象的一个抽象概念,类中定义了这一类对象所应具有的静态和动态属性。

对象:是用计算机语言对问题域中事物的描述,对象通过属性(attribute)和方法(method)来对应事物所具有的静态或动态的属性。

tips:类是一类对象的模板,对象是类的具体实现。

1.1 类的组成

属性(成员变量):成员变量又称为成员属性,它是描述对象状态的数据,是类中很重要的组成成分。

属性代表了类有什么。

格式

 

方法:类的成员,在花括号内编写执行的代码,它是能够执行的功能实现。

方法代表类能做什么。

格式

 

tips:当返回类型为void时,就可以不用return。

 

例:创建一个Teacher的类,类里包含名字的属性和教书科目的属性,还有一个教书的方法。

1.2 引用

Java语言中除了基本类型外的便利类型统称为引用类型

Java中的对象是通过引用对其进行操作的

格式

 
1.3 内存的使用

类是静态的概念,存放在代码区。

对象是new出来的,存放在堆中。类中的成员变量在不同的对象中有不同的值(除了静态变量)。而方法只有一份,在调用时,才消耗内存。

1.4 对象的创建和使用
  • 必须使用new来创建对象
  • 需要使用引用+“.”来调用对象的属性和方法
  • 同一个类的每个对象各有不同的成员变量存储空间
  • 同一个类的每个对象共有类的方法
 

直接使用上面创建的一个Teacher类,创建对象,并调用Teacher的属性和方法

1.5 构造器
  • 也称为构造方法,是一种特殊的构造方法,与类同名但没有返回值类型的方法。
  • 对象的创建就是通过构造方法来完成,其功能主要是完成对象的初始化。
  • 当类实例化一个对象时会自动调用构造方法。
  • 构造方法和其他方法一样也可以重载。
 

系统自动生成的构造器就是这样一个空参构造器,我们可以在构造器中直接初始化类的属性。

1.6 继承
  • 继承是从已有的类中派生出新的类,新的类能吸收已有类的数据属性和行为,并能扩展新的能力。
  • 通常已有的类被称为父类,继承的类被称为子类。
 

第一行一定要书写父类构造方法,如果父类有空参的构造方法,可以不写,这时Java虚拟机(JVM)会为我们添加父类构造方法。

如果父类没有空参构造方法,那么JVM就不能帮我们添加了,需要我们自己使用super关键字调用父类构造方法。

当继承到父类的方法不适合子类时,可以重写父类的方法。

二 修饰词

2.1 访问控制修饰词

当我们需要对变量、方法、类的访问进行控制时,我们就可以为其添加访问控制修饰词

  • 公开:使用public关键词修饰。表示对外公开。
  • 保护:使用protected关键词修饰。表示向子类与同一包下的类公开。
  • 默认(default):没有访问关键字。表示向同一包中的类公开。
  • 私有:使用private关键字修饰。表示完全不公开,只能在同一类中使用。

特点

访问级别仅仅适用于类及类的成员,而不适用于局部变量,局部变量只能在方法内部被访问使用,不需要访问修饰符修饰。

2.2 抽象(abstract)

abstract修饰符可以用来修饰类和成员方法。

  • 使用abstract修饰类表示此类为抽象类。抽象类用于不允许被实例化的类(就是不能产生对象),抽象类就是用来被继承的。
  • 使用abstract修饰方法表示此方法为抽象方法。抽象方法与正常方法(具体方法)区别在于抽象方法没有方法的实现(即没有方法体)。
 

抽象规则

  • 抽象类可以没有抽象方法,但是有抽象方法的类必须被定义为抽象类。
  • abstract不能用来修饰构造方法,抽象类的构造方法也是正常的。
  • 抽象类的构造器虽然不能和new一起创建本类的对象,但是在子类构造器被调用时,第一行必须要来调用父类构造器。
  • 抽象类可以含有具体方法。
2.3 java八大基础属性 final

final就是不可改变的,可以修饰非抽象类,非抽象方法和变量。

  • final修饰的类,将不再能被继承。
  • final修饰的方法,将不再能被子类重写。
  • final修饰的变量必须赋值,且不能再改变。也就称为了常量,常量的命名(标识符)一般都是全大写字母表示。
 

定义了一个WEIGHT的常量等于100。

2.4 static

static修饰词可以用来修饰成员变量(类的属性),成员方法(类的方法)和代码块。

  • 通过static修饰的成员变量和方法,将变为静态(从属于类),不再属于某个对象,将可以直接使用“类名.属性名/方法名() ;”的方式来调用。
  • 通过static修饰代码块,这块代码将在JVM虚拟机加载该类时调用。比构造器更早的调用。

特点

  • 被static修饰的变量将在整个程序中只有一份。这个静态变量将被所有该类的对象持有。
  • 被static修饰的方法不需要通过所属类的实例(对象)来调用,所以在静态方法中,不能使用this,也不能访问此类的非静态方法和非静态变量。

tips:

  • 修饰类:只能使用public,abstract,final
  • 修饰方法:可以使用public,protected,(default),private
  • 修饰属性:可以使用public,protected,(default),private
  • 局部变量:不能添加访问修饰符。

三 接口(interface)

  • 概念性的接口,即指系统对外提供的服务。类的所有能被外部访问的方法就构成了类的接口。
  • 指用interface关键字修饰的一种类型:接口类型。用于描述一系列功能性的方法,并让子类实现。
3.1 接口的成员:
  • 静态变量,接口不能拥有一般的属性,只能拥有被public,static和final修饰的变量,即静态变量。
  • 抽象方法,接口只能拥有抽象方法,不能有具体方法。
  • 不能拥有构造方法,所以接口类型不能直接创建对象。
3.2 抽象类与接口:

相同点

  • 处于继承上层的抽象类型,这样可以提高系统间的松耦合。(父类引用指向子类对象)
  • 他们都不能被实例化(不能直接创建他们的对象)
  • 都可以定义抽象方法,定义抽象方法可以描述我们系统需要的,但又不必操心他的具体实现。

区别

  • 抽象类可以有具体方法,从而避免子类重复实现,提高代码的重用率。而接口只能添加抽象方法,一旦接口被发布,我们就一定要保证他是稳定的,否则我们一修改接口,那么我们就必须修改所有的子类。(抽象类的优势)
  • 一个之类只能继承一个父类,但是他却可以实现多个接口。(接口的优势)

四 内部类

在一个类的内部定义的类称为内部类。内部类允许把一些逻辑相关的类组织在一起。为了叙述方便,我们把最外层的类称为顶层类,内部的类称为内部类。

4.1 成员内部类

定义在类的内部,与成员变量和方法在同一层。

 
 

特点

  • 成员内部类可以直接访问外部类的所有成员,由于内部类是在外部类之中的,所以外部类各个访问级别的成员都是可以访问到的。
  • 成员内部类中还能拥有自己的成员内部类,最里面的内部类能访问到所有外部类的成员。
  • 外部类不能直接访问内部类的成员,必须创建内部类的对象,才能访问到。
  • 成员内部类中不能定义静态变量和静态方法。
  • 在内部类中如有与外部类由相同名字的变量需要使用“外部类名.this.变量名”的方式访问。

tips:

  • 对于顶层类,只能使用public和default两种访问控制符
  • 不过内部类与方法,属性在一层,所以他们也可以使用访问控制符:public,protected,(default),private
4.2 静态内部类

除了使用访问控制符限定成员内部类以外,我们还能使用static修饰我们的内部类。

 

特点

  • 静态内部类可以直接访问外部类的静态成员
  • 静态内部类中可以有静态成员也可以有实例成员
  • 静态内部类中的静态成员可以直接使用“外部类名.内部类名.静态成员”的方式调用
4.3 局部内部类

定义在方法中的类

 

特点

  • 局部内部类只能在定义的方法内
  • 使用局部内部类不能包含静态成员
  • 局部内部类必须在定义后使用
  • 局部内部类与局部变量一样不能使用访问控制符
  • 局部内部类可以访问类中的所有成员
4.4 匿名内部类

匿名内部类是一种特殊的内部类,他在定义的同时创建对象,他需要父类或者父接口来帮助定义。

 

特点

  • 匿名内部类没有构造函数,但是他会调用父类的构造函数
  • 在匿名内部类中使用外部类的局部变量,必须保证局部变量被初始化,也就是使用final关键字修饰
  • 定义匿名内部类的同时会获取到匿名内部类的对象

版权声明


相关文章:

  • java整数基础训练题2025-05-01 20:50:01
  • java基础uml图2025-05-01 20:50:01
  • java基础代码语句2025-05-01 20:50:01
  • 零基础java视频教程下载2025-05-01 20:50:01
  • java基础练手项目2025-05-01 20:50:01
  • java基础框架解读2025-05-01 20:50:01
  • java基础填空题2025-05-01 20:50:01
  • 渝北java基础2025-05-01 20:50:01
  • java基础系列介绍2025-05-01 20:50:01
  • java编程基础笔记2025-05-01 20:50:01