ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

day02-权限修饰符、最终修饰符、静态修饰符、多态

2022-04-23 16:00:21  阅读:140  来源: 互联网

标签:day02 成员 修饰符 多态 static 修饰 final


权限修饰符
是用于控制所修饰内容(类、成员变量、成员方法和构造方法等)的访问权限(使用范围)的修饰符
权限修饰符有哪些
public公共的
是最大的权限,在整个模块中的不同包不同类之间都可以使用
protected受保护的
本包+不同包的子类
默认 缺省(不写)
只能在本包中使用
private私有的
只能在本类中使用
权限修饰的使用范围

权限修饰符修饰类:
只能使用public和默认,不能使用protected和private修饰类,但是一般以后我们都使用public修饰类
权限修饰符修饰成员变量:
四种权限修饰符都可以使用,但是一般以后我们都使用private修饰成员变量
权限修饰符修饰成员方法:
四种权限修饰符都可以使用,但是一般以后我们都使用public,其次private修饰成员方法
权限修饰符修饰构造方法:
四种权限修饰符都可以使用,但是一般以后我们都使用public,其次private修饰构造方法

最终修饰符 final
是一个关键字,也是一个修饰符,我们称为最终修饰符,它可以修饰类、成员方法和变量(成员变量和局部变量)
final修饰的特点
final可以修饰类
修饰的类不能被继承(太监类)
jdk提供一些final修饰的类,比如:String和StringBuilder
如果不希望一个类被继承,就可以使用final修饰,该类中所有的方法也都不能被继承, 更不能被重写了
final可以修饰成员方法
修饰的方法不能被重写,但是可以被继承
final可以修饰变量
修饰的变量变成了常量(属于自定义常量),不能再次赋值
final修饰成员变量
final修饰的成员变量变成了常量,不会有默认初始化值,我们必须手动进行初始化,final修饰的成员变量的初始化时机
1、定义的时候直接赋值 final int age = 10;
2、在构造方法中赋值 final int age;
public Animal(){
age = 10;
}
如果final修饰了成员变量,这个修饰前面还会一起加上另外两个修饰(public static)
常量有自己的命名规范(不按大驼峰式命名也不按小驼峰式命名)
规范
一个单词组成,全部大写 NUM
多个单词组成,全部大写,每个单词中间使用_分隔 MAX_NUM
大小写切换的快捷键:ctrl+shift+u
final修饰局部变量
final修饰局部变量的时候,前面不能加上public static修饰符,因为这两个修饰符不能修饰局部内容
final修饰局部变量是一个基本类型,表示值不能改变
final修饰局部变量是一个引用类型,表示地址值不能改变,但是其中的内容(内部的成员变量的值)可以改变

静态修饰符 static
是一个关键字,也是修饰符,我们称为静态修饰符,static可以修饰成员变量和成员方法等
static修饰的特点:
1、静态修饰的内容是属于类的,而不是某一个对象的,是所有对象所共享的
2、多了一种更加简洁更加推荐的调用方式:类名.静态内容
3、静态只能调用静态不能直接调用非静态
static使用场景
不要一上来变量和方法都是static修饰,只有满足以下场景的时候才使用
1、static修饰成员变量
(1)当某个(些)成员变量的值是该类所有对象所共享的数据,此时使用static修饰
(2)当在一个静态的方法中想要直接使用成员变量,那么该成员变量可以使用static修饰
2、static修饰成员方法
(1)在工具类中的方法,都使用static修饰,调用方便
(2)当在一个静态的方法中想要直接调用成员方法,那么该成员方法可以使用static修饰
对main方法的详细解释
public static void main(String[] args)
public:权限修饰符,让其权限最大
static:静态的,JVM调用的时候不需要创建对象调用,直接可以类名.进行调用
void:main方法没有返回值
main:方法名称,固定的名称,JVM只认这个名字
(String[] args):参数列表,有一个参数
String[]:String类型的数组
args:参数名

多态
多态概述:面向对象三大特征(封装、继承和多态)之一
什么是多态:一个事物,在不同的时期从不同的角度看,表现出来的多种形态
狗 ->狗
狗 ->动物
一个对象,既可以表现为当前类类型,也可以表现为父类类型
Dog d = new Dog();
// 多态
Animal a = new Dog();
多态的前提:
1、有继承或者实现关系 (涉及到接口的知识点)
2、一般有方法重写
3、父类的引用指向子类的对象
多态下成员访问的特点
编译看左边(父类),运行看左边(父类)
编译的时候会查看左边的父类中有没有该成员变量,有就编译通过,没有则编译失败
运行的时候是执行父类的成员变量
成员方法的访问特点
编译看左边(父类),运行看右边(子类)
编译的时候会查看左边的父类中有没有该成员方法,有就编译通过,没有则编译失败
运行的时候执行的子类中的成员方法,如果子类中没有重写成员方法,则使用父类继承的方法
多态的转型(引用类型的转换)
向上转型(类似于基本类型的自动转换):小的类型(子类)转为大类型(父类)
多态就是在做向上转型
向下转型(类似于基本类型的强制转换):大类型(父类)转为小类型(子类)
格式:目标数据类型 变量名 = (目标数据类型)值;
多态的使用场景
1、直接创建对象的时候多态:Animal a = new Cat();
2、方法参数是父类类型,传递实参的时候多态:public static void show(Animal a) {
Dog d = new Dog();
show(d);

Cat c = new Cat();
show(c);
}
3、方法的返回的时候返回值类型是父类类型,返回的时候多态
public static Animal getAnimal(){
Cat c = new Cat();
return c;
}
多态中转型的问题
主要是向下转型的问题
ClassCastException:类型转换异常,引用类型的数据从一种类型转换为另一种类型,无法转换的时候就会报错
解决问题:
判断是这种类型,才去转换为该类型,不是就不要转换
使用instanceof关键字,运算符来进行判断
格式:boolean result = 对象(名) instanceof 类;
可以判断某个对象是否是指定的类型
多态的优缺点
优点
提高代码的扩展性
提高代码的可维护性
降低代码的耦合性
缺点
多态之后无法调用子类特有的成员

标签:day02,成员,修饰符,多态,static,修饰,final
来源: https://www.cnblogs.com/LinkiBieber/p/16182640.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有