java方法重写和多态

1.java的方法重写:

子类根据需求对父类继承的方法进行重新编写

重写的时候,可以使用super来保留父类的方法(构造方法不能被重写)

关键字是:@Override

2.方法重写的要求:

在父子类中

方法名相同

列表参数要相同

返回值类型要和父类的方法匹配( <=)

访问修饰符不能严格于父类

抛出的异常不能大于父类

父类的静态不能重写为非静态,非静态不能重写为静态

子类可以覆盖重写父类静态,无法使用super

父类的私有方法不能被重写

3.方法重写和方法重载的比较

   

位置

方法名

参数表

返回值

访问修饰符

方法重写

子类

相同

相同

相同或子类

不能比父类更严格

方法重载

同类

相同

不同

无关

无关

4.Object类常用重写方法

toString()        返回对象的所有信息,按照字符串对象返回

equals()        比较两个对象是否为同一个

hasCode()        返回对象的哈希代码值

getclass()        返回对象所属的类信息,返回Class对象

5.多态:

父类类型接收子类对象//子类对象引用父类类型,重写是多态的基础

多态的主要方式:使用父类作为方法的形参,使用父类作为方法的返回值

6.代理模式,静态代理

为其他对象提供一种代理,以控制对这个对象的访问。
代理对象在客服端和目标对象之间起到中介作用,代理模式属于结构型设计模式。

public class Father {
	//代理模式,静态代理
	public Father getInstance(String chose) {
		if (chose.equals("儿子")) {
			return new A();
		} else if(chose.equals("女儿")){
			return new B();
		}else {
			return new Father();
		}
	}
	
	public static void main(String[] args) {
		Father f = new Father();
		Father ff = f.getInstance("儿子");
		System.out.println(ff);
				
	}
	
}

class A extends Father{}
class B extends Father{}

通过Father类中的getInstance方法来代理创建儿子A类或者女儿B类,或者Father类

 

 7.转型

1) 向上转型:

父类的引用指向子类对象,自动进行类型转换

例如: Pet pet = new Dog(); //Pet 父类,Dog 子类

<父类型> <引用变量名> = new <子类型>();

此时通过父类引用变量调用的方法是子类覆盖或继承父类的方法,不是父类的方法,此时通过父类引用变量无法调用子类特有的方法

2) 向下转型:

将一个指向子类对象的父类引用赋给一个子类的引用,即:父类类型转换为子类类型。需强制类型转换

<子类型> <引用变量名> = (<子类型> )<父类型的引用变量>;

Dog dog=(Dog)pet; //将pet 转换为Dog类型

为了判断是否为真实子类类型,常常添加判断:instanceof

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值