修饰符:
static:①可修饰变量(属性);②可修饰方法;③可修饰代码块。
Static int data语句说明data为类变量,为一个类的共享变量,属于整个类。
Int data为实例变量。
例:
static int data;
m1.data=0;
m1.data++的结果为1,此时m2.data的结果也为1。
Static定义的是一块为整个类共有的一块存储区域,其发生变化时访问到的数据都时经过变化的。
其变量可以通过类名去访问:类名.变量名。与通过访问对象的编译时类型访问类变量为等价的。
Public static void printData(){}
表明此类方法为类方法(静态方法)
静态方法不需要有对象,可以使用类名调用。
静态方法中不允许访问类的非静态成员,包括成员的变量和方法,因为此时是通过类调用的,没有对象的概念。This.data是不可用的。
一般情况下,主方法是静态方法,所以可调用静态方法,主方法为静态方法是因为它是整个软件系统的入口,而进入入口时系统中没有任何对象,只能使用类调用。
覆盖不适用于静态方法。
静态方法不可被覆盖。(允许在子类中定义同名静态方法,但是没有多态,严格的讲,方法间没有多态就不能称为覆盖)
当static修饰代码块时(注:此代码块要在此类的任何一个方法之外),那么这个代码块在代码被装载进虚拟机生成对象的时候可被装载一次,以后再也不执行了。
一般静态代码块被用来初始化静态成员。
Static通常用于Singleton模式开发:
Singleton是一种设计模式,高于语法,可以保证一个类在整个系统中仅有一个对象。
final可以修饰类、属性、方法。
当用final修饰类的时候,此类不可被继承,即final类没有子类。这样可以用final保证用户调用时动作的一致性,可以防止子类覆盖情况的发生。
当利用final修饰一个属性(变量)的时候,此时的属性成为常量。
JAVA利用final定义常量(注意在JAVA命名规范中常量需要全部字母都大写):
Final int AGE=10;
常量的地址不可改变,但在地址中保存的值(即对象的属性)是可以改变的。
Final可以配合static使用。 ?
Static final int age=10;
在JAVA中利用public static final的组合方式对常量进行标识(固定格式)。
对于在构造方法中利用final进行赋值的时候,此时在构造之前系统设置的默认值相对于构造方法失效。
常量(这里的常量指的是实例常量:即成员变量)赋值:
①在初始化的时候通过显式声明赋值。Final int x=3;
②在构造的时候赋值。
局部变量可以随时赋值。
利用final定义方法:这样的方法为一个不可覆盖的方法。
Public final void print(){};
为了保证方法的一致性(即不被改变),可将方法用final定义。
如果在父类中有final定义的方法,那么在子类中继承同一个方法。
如果一个方法前有修饰词private或static,则系统会自动在前面加上final。即private和static方法默认均为final方法。
注:final并不涉及继承,继承取决于类的修饰符是否为private、default、protected还是public。也就是说,是否继承取决于这个方法对于子类是否可见。
Class A{int a = 3;}
Final A a = new A():a指向的内存地址不能改变,但是A类的属性a可以改变a=6.
Abstract(抽象)可以修饰类、方法
如果将一个类设置为abstract,则此类必须被继承使用。此类不可生成对象,必须被继承使用。
Abstract可以将子类的共性最大限度的抽取出来,放在父类中,以提高程序的简洁性。
Abstract虽然不能生成对象,但是可以声明,作为编译时类型,但不能作为运行时类型。
Final和abstract永远不会同时出现。
当abstract用于修饰方法时,此时该方法为抽象方法,此时方法不需要实现,实现留给子类覆盖,子类覆盖该方法之后方法才能够生效。
注意比较:
private void print(){};此语句表示方法的空实现。
Abstract void print(); 此语句表示方法的抽象,无实现。
如果一个类中有一个抽象方法,那么这个类一定为一个抽象类。
反之,如果一个类为抽象类,那么其中可能有非抽象的方法。
如果让一个非抽象类继承一个含抽象方法的抽象类,则编译时会发生错误。因为当一个非抽象类继承一个抽象方法的时候,本着只有一个类中有一个抽象方法,那么这个类必须为抽象类的原则。这个类必须为抽象类,这与此类为非抽象冲突,所以报错。
所以子类的方法必须覆盖父类的抽象方法。方法才能够起作用。
只有将理论被熟练运用在实际的程序设计的过程中之后,才能说理论被完全掌握!
为了实现多态,那么父类必须有定义。而父类并不实现,留给子类去实现。此时可将父类定义成abstract类。如果没有定义抽象的父类,那么编译会出现错误。
Abstract和static不能放在一起,否则便会出现错误。(这是因为static不可被覆盖,而abstract为了生效必须被覆盖。)
例:(本例已存在\CODING\abstract\TestClass.java文件中)
public class TestClass{
public static void main(String[] args){
SuperClass sc=new SubClass();
Sc.print();
}
Abstract class SuperClass{
Abstract void print();}
}
class SubClass extends SuperClass(){
void print(){
System.out.println(“print”);}
}
分享到:
相关推荐
java面向对象高级篇 super way believe it
**PHP面向对象高级编程**指的是在PHP 5及以上版本中,利用其强大的面向对象特性进行更复杂的编程。PHP 5引入了对象模型的重构,包括类、对象、继承、封装和多态等基本概念,同时也增加了如析构函数、抽象类、接口、...
【面向对象高级教程】是针对软件工程领域的一门专业课程,课程编码为OB101,由资深讲师蒋严冰主讲。这门课程聚焦于深入理解和应用面向对象技术,旨在提升学员在软件开发中的面向对象思维和实践能力。作为软件学院的...
Java语言面向对象高级程序设计是计算机科学中的一个重要领域,它主要涵盖了Java编程语言在面向对象设计方面的深入概念和技术。这门课程通常由大学或教育机构教授,如湖南人文科技学院的郭广军讲师主讲,旨在帮助学生...
### C++ 面向对象高级语言程序设计 #### 1. C++ 概述 C++ 是一种基于 C 语言的高级编程语言,它在 C 的基础上增加了面向对象编程和泛型编程的支持。C++ 的命名来源于 C 语言中的递增运算符 `++`,暗示着它是 C ...
### JavaScript面向对象高级编程知识点概述 #### 面向对象编程(OOP) 1. **继承**:继承是OOP的核心概念之一,它允许我们创建一个类,该类继承了另一个类的属性和方法。继承机制是实现代码重用和创建类之间层次结构...
面向对象高级程序设计是Java开发中的重要概念,它包括了多个关键知识点,如继承、多态性、抽象类和抽象方法、接口以及内部类和匿名类。这些特性使得Java能够构建更加灵活、可扩展和模块化的软件系统。 1. **继承**...
Java 面向对象高级编程 Java 面向对象高级编程是 Java 编程语言中的一个重要概念,通过继承和方法覆盖创建子类,并能够创建异类集合并使用多态。本资源摘要信息将详细介绍 Java 面向对象高级编程的概念、继承、方法...
在Java的面向对象高级程序设计中,涉及的知识点众多,包括但不限于以下内容: 1. 类与对象:类是创建对象的模板,定义了对象的状态(属性)和行为(方法)。对象则是类的实例,拥有类所定义的属性和方法。在Java中...
面向对象的高级部分,面向对象的高级部分,面向对象的高级部分。
面向对象高级程序设计是Java编程中的核心概念,它涉及到类、对象、继承、封装、多态等核心特性。在这个"Java SE 学习教程(面向对象高级程序设计)"中,我们可以通过13个精心编排的Word文档深入了解这些主题。 1. *...
"Java面向对象高级编程实验报告" 本实验报告涵盖了Java面向对象高级编程的知识点,包括继承、多态、抽象类和接口等。实验目的旨在掌握Java面向对象编程技术,能够使用继承创立子类并实现方法覆盖,创立异类集合并...
面向对象高级技术是软件开发领域中的一个重要主题,尤其在Java、C++等编程语言中广泛应用。这个"面向对象高级技术**脱产班"的课程似乎是一个深度探讨面向对象编程概念和实践的教育项目,旨在帮助学员提升其在该领域...
LAMPBrotherPPT--面向对象高级
适合人群:具有C#基础并希望深入了解面向对象高级特性的开发者。 使用场景及目标:通过学习本文,开发者可以更好地理解和运用C#中的接口和抽象类,提高代码的灵活性、可维护性和可扩展性。本文特别适用于设计和实现...
### 2024面向对象高级静态和继承HM #### 面向对象高级静态与继承概述 在Java编程语言中,面向对象编程(Object-Oriented Programming, OOP)是一种核心思想和技术,它强调通过定义类(Class)来封装数据和行为。...
C++面向对象高级编程 C++是一种高级编程语言,它支持面向对象编程(Object Oriented Programming, OOP)和泛型编程(Generic Programming)。本文档将详细介绍C++面向对象高级编程的知识点,包括C++语言的历史、...