java面向对象进阶--常见名词解释

​活动地址:CSDN21天学习挑战赛

包、权限修饰符、final、常量、枚举、抽象类、面向对象三大特征之三:多态

包:是用来分门别类的管理各种不同类的,类似于文件夹、建包利于程序的管理和维护。

建包的语法格式:package 公司域名倒写.技术名称。报名建议全部英文小写,且具备意义
建包语句必须在第一行,一般IDEA工具会帮助创建
导包 :
相同包下的类可以直接访问,不同包下的类必须导包,才可以使用!导包格式:import 包名.类名;
假如一个类中需要用到不同类,而这个两个类的名称是一样的,那么默认只能导入一个类,另一个类要带包名访问。

权限修饰符:是用来控制一个成员能够被访问的范围。
可以修饰成员变量,方法,构造器,内部类,不同权限修饰符修饰的成员能够被访问的范围将受到限制。

权限修饰符的分类和具体作用范围:有四种作用范围由小到大(private -> 缺省 -> protected - > public )

java面向对象进阶--常见名词解释_第1张图片

final的作用
final 关键字是最终的意思,可以修饰(类、方法、变量)
修饰类:表明该类是最终类,不能被继承。
修饰方法:表明该方法是最终方法,不能被重写。
修饰变量:表示该变量第一次赋值后,不能再次被赋值(有且仅能被赋值一次)。
final修饰变量的注意
final修饰的变量是基本类型:那么变量存储的数据值不能发生改变。
final修饰的变量是引用类型:那么变量存储的地址值不能发生改变,但是地址指向的对象内容是可以发生变化的。
常量 :是使用了public static final修饰的成员变量,必须有初始化值,而且执行的过程中其值不能被改变。
常量名的命名规范:英文单词全部大写,多个单词下划线连接起来。
常量的作用:通常用来记录系统的配置数据。

public class Configurations {  
    //项目名称
    public static final String ProjectName ='项目名称';
} 

常量做信息配置的原理、优势:在编译阶段会进行“宏替换”:把使用常量的地方全部替换成真实的字面量。
维护系统容易,可读性更好。

枚举:是Java中的一种特殊类型
枚举的作用:"是为了做信息的标志和信息的分类"。

定义枚举类的格式:
修饰符 enum 枚举名称{
            第一行都是罗列枚举类实例的名称。
}
public enum Season{
SPRING , SUMMER , AUTUMN , WINTER;
}

枚举的特征:
枚举类都是继承了枚举类型:java.lang.Enum
枚举都是最终类,不可以被继承。
构造器都是私有的,枚举对外不能创建对象。
枚举类的第一行默认都是罗列枚举对象的名称的。
枚举类相当于是多例模式。

抽象类:在Java中abstract是抽象的意思,可以修饰类、成员方法。
abstract修饰类,这个类就是抽象类;修饰方法,这个方法就是抽象方法。

修饰符 abstract class 类名{ 
    修饰符 abstract 返回值类型 方法名称(形参列表);
 }

1、抽象类、抽象方法是什么样的?
都是用abstract修饰的;抽象方法只有方法签名,不能写方法体。
一个类中定义了抽象方法,这个类必须声明成抽象类。
2、抽象类基本作用是啥?
作为父类,用来被继承的。
3、继承抽象类有哪些要注意?
一个类如果继承了抽象类,那么这个类必须重写完抽象类的全部抽象方法,否则这个类也必须定义成抽象类。

特征和注意事项
类有的成员(成员变量、方法、构造器)抽象类都具备
抽象类中不一定有抽象方法,有抽象方法的类一定是抽象类
一个类继承了抽象类必须重写完抽象类的全部抽象方法,否则这个类也必须定义成抽象类。
不能用abstract修饰变量、代码块、构造器。
最重要的特征:得到了抽象方法,失去了创建对象的能力(有得有失)

final和abstract是什么关系?
互斥关系
abstract定义的抽象类作为模板让子类继承,final定义的类不能被继承。
抽象方法定义通用功能让子类重写,final定义的方法子类不能重写。 

多态:指对象可以有多种形态。
多态的常见形式
父类类型 对象名称 = new 子类构造器;
多态中成员访问特点
方法调用:编译看左边,运行看右边。
变量调用:编译看左边,运行也看左边。(注意)
多态的前提
有继承/实现关系;有父类引用指向子类对象;有方法重写(多态侧重行为多态)。

  • 引用数据类型的类型转换,有几种方式?
  •  自动类型转换、强制类型转换。

  • 强制类型转换能解决什么问题?
  •  可以转换成真正的子类类型,从而调用子类独有功能。

  • 强制类型转换需要注意什么?
  •  有继承关系/实现的2个类型就可以进行强制转换,编译无问题。
     运行时,如果发现强制转换后的类型不是对象真实类型则报错(ClassCastException)

  • 强制类型转换前最好做什么事情,如何进行?
  •  使用instanceof判断当前对象的真实类型,再进行强制转换
     对象变量名 instanceof 真实类型 

你可能感兴趣的:(日常,后端,java)