一、多态

1、对象的多种形态

(1)引用多态:

父类的引用可以指向本类的对象

父类的引用可以指向子类的对象

(2)方法多态:

创建本类对象时,调用的方法为本类方法:

创建子类对象时,调用的方法是子类方法,如果没重写,调用的就是继承父类的方法

(3)父类的引用是不可以调用子类特有的方法。

二、多态中的引用类型转换

1、向上类型转换(隐式/自动类型转换)

小类型到大类型的转换

2、向下类型转换(强制类型转换)

大类型到小类型的转换

3、instanceof运算符,来解决引用对象的类型,避免类型转换的安全性问题。

4、一个demo

5、使用instanceof运算符,来解决引用对象的类型,避免类型转换的安全性问题的一个demo

三、抽象类

1、语法定义

在类前面使用abstract修饰的类就是抽象类

2、应用场景:

(1)在某些情况下,某个父类只是知道其子类应该包含怎样的方法,但无法准确知道这些子类如何实现这些方法。

(2)从多个具有相同特征的子类中抽象出一个抽象类,以这个抽象类作为子类的模板,从而避免了子类设计的随意性。

3、作用:

限制规定子类必须实现的某些方法,但不关注实现细节。

4、使用规则:

(1)使用abstract定义抽象类

(2)abstract定义抽象方法,只有声明,不需要实现

(3)包含抽象方法的类是抽象类

(4)抽象类中可以包含普通的方法,也可以没有抽象方法。

(5)抽象类不能直接创建,可以定义引用变量

5、一个demo

(1)建立一个手机抽象类

package com.cnblogs;

public abstract class Telphone
{
public abstract void call();
public abstract void sendMessage();
}

(2)创建一个老式手机CellPhone类

package com.cnblogs;

public class CellPhone extends Telphone {

    @Override
public void call() {
// TODO Auto-generated method stub
System.out.println("通过键盘打电话");
} @Override
public void sendMessage() {
// TODO Auto-generated method stub
System.out.println("通过键盘发短信");
} }

(3)同(2),建立只能手机类SmartPhone

package com.cnblogs;

public class SmartPhone extends Telphone {

    @Override
public void call() {
// TODO Auto-generated method stub
System.out.println("使用语音打电话"); } @Override
public void sendMessage() {
// TODO Auto-generated method stub System.out.println("使用语音发短信");
} }

(4)建立入口类Init

package com.cnblogs;

public class Init {

    public static void main(String[] args) {
// TODO Auto-generated method stub
Telphone tel1 = new CellPhone();
tel1.call();
tel1.sendMessage();
Telphone tel2 = new SmartPhone();
tel2.call();
tel2.sendMessage(); } }

(5)运行结果:

四、Java中的接口

1、接口定义

类是一种具体实现提,而接口定义了某一批类所需要遵守的规范,接口不关心这些类的内部数据,也不关心这些类方法的具体实现,它只规定这些类里必须提供的某些方法。

2、定义方法:

使用interface关键字:

[修饰符]  interface 接口名[extends 父接口1,父接口2……]
{
0个~多个常量定义
0个~多个抽象方法定义
}

3、接口定义:

接口中的方法只能是抽象方法,总是使用,即使定义时不添加public  abstract修饰符,系统也是默认加上的。

4、使用接口:

一个类可以实现一个或多个接口,实现接口使用implements关键字,Java中一个类只能继承一个父类,但是可以继承多个接口。

格式固定,不能改变extends和Implements顺序的调换。

5、一个demo

(1)定义一个接口:

package com.cnblogs;

public interface IPlayGame {
public void playGame(); }

(2)SmartPhone引用接口

package com.cnblogs;

public class SmartPhone extends Telphone implements IPlayGame
{ @Override
public void call() {
// TODO Auto-generated method stub
System.out.println("使用语音打电话"); } @Override
public void sendMessage() {
// TODO Auto-generated method stub System.out.println("使用语音发短信");
} public void playGame()
{
System.out.println("手机可以玩游戏");
} }

(3)新建PSP类,引用接口

package com.cnblogs;

public class Psp implements IPlayGame {

    @Override
public void playGame() {
// TODO Auto-generated method stub
System.out.println("PSP可以玩游戏"); } }

(4)使用方法:

IPlayGame ip1 = new SmartPhone();
IPlayGame ip2 = new Psp(); ip1.playGame();
ip2.playGame();

6、使用接口

(1)接口在使用过程中,还经常与匿名内部类配合使用

(2)匿名内部类定义:

没有名字的内部类,多用于关注实现而不关注实现类的名称

(3)语法格式:

Interface i = new Interface();
{
public void method()
{
System.out.println("匿名内部类实现接口的方式");
}
}

(4)一个demo

IPlayGame ip3 = new IPlayGame(){

            @Override
public void playGame() {
// TODO Auto-generated method stub
System.out.println("使用匿名内部类的方式实现接口");
}
}; ip3.playGame(); new IPlayGame(){ @Override
public void playGame() {
// TODO Auto-generated method stub
System.out.println("使用匿名内部类的方式实现接口2");
} }.playGame();

五、UML简介

1、UML概念

Java学习笔记(十)——多态的更多相关文章

  1. Java学习笔记十八:Java面向对象的三大特性之封装

    Java面向对象的三大特性之封装 一:面向对象的三大特性: 封装 继承 多态   二:封装的概念: 将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访 ...

  2. Java学习笔记十五:Java中的成员变量和局部变量

    Java中的成员变量和局部变量 一:成员变量: 成员变量在类中定义,用来描述对象将要有什么 成员变量可以被本类的方法使用,也可以被其他类的方法使用,成员变量的作用域在整个类内部都是可见的 二:局部变量 ...

  3. 1.12(java学习笔记)多态及向上、向下转型

    一.多态 多态是指同一个方法被调用,由于对象不同导致行为不同. 例如调用自由活动方法,张三喜欢玩耍,那么他就会去玩耍. 李四喜欢学习,那么他可能去学习.调用方法因对象的不同 而产生了不同的行为. 形成 ...

  4. java学习笔记(4)多态

    一.多态 --------------------------------------------- 1.定义:某一类事物的多种存在形态 例如:动物中猫,狗. 猫这个对象对应的类型是猫类型 猫 x  ...

  5. Thinking in java学习笔记之多态

    多态是一种将改变的事物和未变的事物分离开来的重要技术.

  6. Java学习笔记之多态

    1.父类型的引用可以指向子类型的对象: Parent p = new Child(); 2.当使用多态方式调用方法时,首先检查父类中是否有该方法,如果没有,则编译错误:如果有,再去调用子类的该同名方法 ...

  7. Java学习笔记之——多态、抽象

    1. 多态 多态:同一种事物调用同一个方法有不同的表现行为.(同一类型操作,作用于某一类对象,可以有不同的解释,产生不同的执行结果) 应用场景;当你定义一个功能性的方法可以使用多态的概念 前提:子类继 ...

  8. java学习笔记_多态

    多态:父类的变量可以引用子类的对象 引用: Student s1 = stu; s1.setScore(200); 1.一个对象可以有多个引用,可以有多个变量操作同一个对象   2.当一个对象没有任何 ...

  9. Java学习笔记十九:Java中的访问控制修饰符

    Java中的访问控制修饰符 一:Java修饰符的种类: 访问修饰符 非访问修饰符 修饰符用来定义类.方法或者变量,通常放在语句的最前端.我们通过下面的例子来说明: public class Hello ...

  10. Java学习笔记十六:Java中的构造方法

    Java中的构造方法 1.使用new+构造方法 创建一个新的对象: 2.构造方法是定义在Java类中的一个用来初始化对象的方法: 3.构造方法与类同名且没有返回值: 4.语法格式: public 构造 ...

随机推荐

  1. How to take partial screenshot with Selenium WebDriver in python

    from selenium import webdriver from PIL import Image fox = webdriver.Firefox() fox.get('http://stack ...

  2. MySQL\MariaDB 多线程复制初探

    背景: MariaDB 在10.0.5就已经支持了并行复制的功能,即从库多线程复制的功能.MySQL最先在5.6.3中支持.目前暂时没有用MySQL5.6的版本,故暂时只对MariaDB进行一些说明, ...

  3. springMVC中ajax的使用

    springMVC中使用ajax有两种方法,第一种是根据servletAPI来使用ajax,第二种是根据springMVC给我们提供的API来使用. 一.根据servletAPI: springMVC ...

  4. Python初识

    Python第一天   一.为什么学Python        作为一名linux运维工程师现在越来越感觉不好干了.没有地位,还待背黑锅,并且运维自动化发展的这么快,普通运维岗位的路也越来越窄(因为我 ...

  5. Mysql 基础1

    Mysql int 整型float 小数double 小数varchar(20) 字符串bit 布尔型数据datetime 日期时间类型text 长文本 money 存货币image 存二进制数据 数 ...

  6. 【HTTP】Wireshark过滤规则

    参考:http://jingyan.baidu.com/article/454316ab593170f7a6c03a60.html 语句特点:协议.属性 一.IP过滤: 包括来源IP或者目标IP等于某 ...

  7. 在Eclipse中手动安装pydev插件,eclipse开发python环境配置

    最近在学习Python,因为我是做java的,用惯了eclipse,所以就想用eclipse开发python,但是配置开发环境的时候发现按照网上的配置大多不行,而且都是用的在线安装,很垃圾,没办法,自 ...

  8. php策略模式的研究

    <?php abstract class Moshi{     private $num;     public $price;     const Ted=1;     const Sed=2 ...

  9. Android笔记:实现点击事件

    布局文件声明控件 .java文件获取控件 1. button.setOnClickListener(new View.OnClickListener() {            @Override  ...

  10. Linear regression with multiple variables(多特征的线型回归)算法实例_梯度下降解法(Gradient DesentMulti)以及正规方程解法(Normal Equation)

    ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, , ...