11Java多态

什么是多态
从字面的意思上理解,多态就是多种形态。
同一个动作作用于不同的对象产生不同的行为
多态性指的是什么?多态性,可以理解为一个事物的多种表现形态。
在Java中有两种体现:方法的重载(overload)和重写(overwrite)子类对象的多态性(可以直接应用在抽象类和接口上)
对象的多态性是什么?:一个对象多种形态;在Java中,子类的对象可以替代父类的对象使用
多态性有两种
编译时多态性
对于多个同名方法,如果在编译时能够确定执行同名方法中的哪一个,则称为编译时多态性。
运行时多态性
如果在编译时不能确定,只能在运行时才能确定执行多个同名方法中的哪一个,则称为运行时多态性
方法重写和重载的区别*
方法重写的规则
在继承关系的子类中
重写的方法名、参数、返回值类型必须与父类相同
私有方法不能继承因而也无法重写
在这里插入图片描述
对象的转型
对象转型分为:—向上转型—向下转型
举例:Pet是父类,Dog是继承Pet类的子类。
Pet pet1=new Dog(“小白”, “泰迪”);
//即为向上转型,现在pet1引用指向一个Dog对象
Dog dog1=(Dog) pet1;//为向下转型,现在pet1还是指向Dog对象
举例:
Pet是父类,Dog是继承Pet类的子类。
Pet pet1=new Dog(“小白”, “泰迪”);
//即为向上转型,现在pet1引用指向一个Dog对象
Dog dog1=(Dog) pet1;//为向下转型,现在pet1还是指向Dog对象
Penguin pgn1=(Penguin) pet1;//则抛出异常classcastException
instanceof运算符
该运算符用来判断一个对象是否属于一个类或者实现了一个接口,结果为true或false在强制类型转换之前通过instanceof运算符检查对象的真实类型,可以避免类型转换异常,从而提高代码健壮性
final 关键字
final修饰的类不能被继承。提高安全性,提高程序的可读性。
比如:String类、System类、StringBuffer类
final修饰的方法不能被子类重写。比如:Object类中的getClass()。
final修饰的属性为常量。一旦初始化后,不可再被赋值。习惯上,常量用大写字符表示。
final标记的成员变量必须在声明的同时或在每个构造方法中或代码块中显式赋值,然后才能使用。
比如:final double PI=3.14;若变量用static final修饰:全局常量。比如:Math 类的PI
在这里插入图片描述
static关键字
➢当我们通过new关键字创建对象的时候,这时系统才会分配内存空间给每个对象,其方法才可以供外部调用。
➢我们有时候希望无论是否产生了对象或无论产生了多少对象的情况下,某些特定的数据在内存空间里只有一份。
使用范围:
➢在Java类中,可用static修饰属性、方法、代码块、内部类
被修饰后的成员具备以下特点:
➢随着类的加载而加载
➢优先于对象存在
➢修饰的成员,被所有对象所共享
➢访问权限允许时,可不创建对象,直接被类调用
在这里插入图片描述
类变量
由类创建的所有的对象,都共用这一个属性
当其中一个对象对此属性进行修改,会导致其他对象对此属性的一个调用。
类变量随着类的加载而加载的,而且独一份
静态的变量可以直接通过“类.类变量”的形式来调用
类变量的加载是要早于对象。所以当有对象以后,可以“对象.类变量”使用。但是"类.实例变量"是不行的。
类变量存在于静态域中
类方法
通常的方法都会涉及到对具体对象的操作。这些方法在调用时,需要隐式的传递对象的引用。没有对象的实例时,可以用类名.方法名()的形式访问static标记的类方法。
➢在静态方法里只能直接调用同类中其它的静态成员(包括变量和方法),而不能直接访问类中的非静态成员。
➢静态方法不能以任何方式引用this关键字。因为静态方法在使用前不用创建任何实例对象,当静态方法被调用时,this所引用的对象根本就没有产生。
➢main() 方法是静态的,因此JVM在执行main方法时不创建main方法所在的类的实例对象,因而在main()方法中,我们不能直接访问该类中的非静态成员。
类属性、类方法的作用
➢随着类的加载而加载,只加载一次
➢类属性作为该类各个对象之间共享的变量。
➢在设计类时,分析哪些类属性不因对象的不同而改变,将这些属性设置为类属性。
➢如果方法与调用者无关,则这样的方法通常被声明为类方法,由于不需要创建对象就可以调用类方法,从而简化了方法的调用。
静态初始化
一个类中可以使用不包含在任何方法体中的静态代码块。当类被载入时,静态代码块被执行,且只被执行一次。静态块经常用来进行类属性的初始化。static块通常用于初始化static(类)属性

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值