3.14学习内容

多态

1.多态:Person p = new English();

创建一个子类对象,把它的引用赋值给父类的引用变量,用父类的引用变量调用子类重写的方法。

2.前提条件:1.继承  2.子类必须重写父类的方法  3.将子类对象赋值给父类的引用变量

3.多态的好处:1.减少方法的重载  2.符合开闭原则(对扩展开放,对修改关闭)

4.多态的应用场合:1.父类的引用做方法的形参(public boolean equals(Object obj))  2.父类的引用做返回值

5.简单工厂模式:把对象的应用与创建分开,工厂是创建对象的,用户来应用。(23种设计模式里有工厂模式,没有简单工厂模式)

public static Person getPerson(String str)

1.static     静态方法,直接类名调用

2.Person     父类类型做返回值,返回的可以是任意的子类对象

3.str        形参,一般是字符串,接收用户的要求

6.父类的引用变量不能调用子类独有的方法,解决方法:向下转型

Person p = new Chinese();

Chinese ch = (Chinese)p;

ch.方法名();

1.强制转换后就可以调用子类特有的方法

2.向下转型的前提是向上转型

3.向下转型必须转成真实的子类类型(之前new的是什么,就转成什么)

4.避免转型错误而产生异常的方法:instanceof

System.out.println(p instanceof Chinese);

方法作用:Chinese是否与p类型相同或者是p的直接或间接父类

7.向上转型(子类→父类)

Person p = new Chinese();    向上转型,自动转型

8.abstract关键字

English,Chiense,Japanese都属于Person类,但是Person类不需要直接实例化;而父类的有些方法子类必须重写。

抽象类

1.使用abstract修饰   2.抽象类不能实例化   3.抽象类的构造方法不能删掉,也不能私有化,因为子类创建的时候要使用   4.抽象类可以有0/1/多个抽象方法

抽象方法

1.使用abstract修饰   2.抽象方法只有声明,没有实现(没有{})   3.public abstract void shout(){};不是抽象方法   4.子类必须实现父类的抽象方法,除非子类也是抽象类   5.抽象方法只能定义在抽象类中

abstract不能与哪些关键字同时使用

final   private(子类不能重写私有的方法)   static(使用类名来调用一个没有方法体的方法没有意义)

9.final关键字

作用

1.修饰变量,变量变为常量,不能修改值

2.修饰方法,方法不能被子类重写

3.修饰类,类不能被继承,final类中方法默认都不能被重写(即使没用final修饰方法)

如果不想让一个类在其他类中创建对象:私有化构造方法


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值