3/4day03_多态_内部类_权限修饰_代码块

回顾

1.接口中可以写成员变量吗?
不能! 接口只能写常量,由三个修饰符public static final修饰的

2.接口中都可以写哪种方法?
抽象方法[最常见的]
默认方法
静态方法

3.我们学过的普通类,抽象类,接口中哪些有构造方法?哪些没有构造方法?
普通类有构造方法: a.new对象时使用 b.子类的构造方法第一行调用
抽象类有构造方法: b.子类的构造方法第一行调用
接口没有构造方法(因为接口中没有成员变量,也不需要对成员变量初始化)

4.描述一下Java中类和类的关系,类和接口的关系,接口和接口的关系
类和类:单继承
类和接口: 多实现(类实现接口)
接口和接口: 多继承[了解]

5.接口和抽象类的异同有哪些?[面试题]
a.概念:什么是接口,什么是抽象类
b.相同
都是java文件,编写以后都是.class文件
都是引用数据类型
都不能创建对象
都可以含有抽象方法
子类/实现类继承之后都必须重写所有抽象方法,之后才能创建对象
c.不同
关键字不同
接口中没有成员变量,抽象类中可以有成员变量
接口可以多实现,抽象类只能单继承
抽象类有构造,接口无构造
抽象类中有普通方法,接口中不能有普通方法

今日内容

  • 多态(重点)
  • 内部类
  • 权限修饰符
  • 代码块

多态

概述

  • 面向对象三大特征
    封装,继承,多态

  • 定义
    多态:是指同一行为,具有多个不同表现形式。
    (同一个对象具有不同的形态)

多态的前提[重要]

1.必须有继承关系或者实现关系
2.必须有方法的重写

  1. 父类变量引用子类对象
    只有1,2同时满足才能有多态

多态的体现[重要]

父类类型的变量 指向了 子类类型的对象
父类类型 变量名 = new 子类对象;

Fu ff = new Zi();

多态调用方法的特点[重点]

1.多态调用方法时,编译阶段是看父类 . 如果父类没有该方法就会出错
2.多态调用方法时, 运行阶段看子类. 运行的是子类的方法
总结, 编译看父类, 运行看子类

多态的好处[重点]

多态提高了代码的扩展性,灵活性

多态的弊端

弊端: 使用多态时, 只能调用子父类都有的方法. 不能调用子类特有的方法

多态弊端解决方案

基本类型转换:1.自动类型转换,2.强制类型转换

引用类型转换:
1.向上转型(把子类类型转成父类类型)
Animal an = new Dog();//多态就是向上转型
2.向下转型 (把父类类型转成子类类型)
必须有向上转型,才能有向下转型
Dog d = (Dog)an;

向下转型最多只能转型到本身

转型可能出现的异常

ClassCastException 类型转换异常

向下转型 转到其他子类编译阶段同样通过, 但是运行会出错

instanceof关键字

  • 作用:可以用来判断一个对象,是否是我们指定类的对象
  • 格式
    boolean b = 对象名 instanceof 类名

内部类

在类A里 定义一个 类B.
类B成为内部类, 类A称为外部类
内部类:(一个java文件里只能有一个public修饰的类)
1.成员内部类(类中方法外)
2.局部内部类(类中方法内)

在内部类方法中找外部类的成员变量 使用
外部类名.this.变量名

成员内部类

特点:
1.在成员内部类中,可以无条件访问外部类的任何成员
2.在测试类中创建内部类对象
,必须先创建外部类对象, 通过外部类对象再去创建内部类对象
格式:
外部类名.内部类名 对象名 = new 外部类型().new 内部类型();
如:
Person.Heart h = new Person().new Heart();
或者
Person p = new Person();
Person.Heart h = p.new Heart();

内部类文件编译的字节码文件

内部类仍然是一个独立的类,在编译之后会内部类会被编译成独立的.class文件

格式:
外部类的类名和$符号 。

比如:
Person$Heart.class

匿名内部类[重点]

  • 定义
    匿名内部类是内部类的简化形式.

  • 作用
    匿名内部类可以帮助我们快速的创建一个父类的子类对象或者一个接口的实现类对象

  • 使用方法
    匿名内部类, 大括号内部, 不要写子类特有方法, 因为匿名内部类, 没有类名, 无法向下转型


如图接口的匿名内部类使用:


匿名内部类格式总结:

 父类名/接口名 对象名 = new 父类名/接口名 () {
                    //重写父类或者接口中所有抽象方法
}

权限修饰符

介绍

  • public:公共的
  • protected:受保护的
  • (空的):默认的(default本身不是权限修饰符)
  • private:私有的

成员变量使用 private ,隐藏细节。
构造方法使用 public ,方便创建对象。(单例设计模式构造方法用的private)
成员方法使用 public ,方便调用方法。

代码块

定义

由一对大括号括起来的一句或者多句代码, 称为代码块儿

构造代码块

  • 执行:每次创建对象都会执行构造代码块,构造代码块儿要比构造方法先执行
  • 格式:类中方法外
public class 类名{
    {
        //构造代码块
    }
}

静态代码块

  • 描述:就是给构造代码块 添加了 static 关键字
  • 执行:(当类加载到内存时,静态代码块立即执行)随着类的加载而执行且执行一次,优先构造方法的执行。
  • 格式:类中方法外
public class 类名{
  static{
          //静态代码块
      }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,732评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,496评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,264评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,807评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,806评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,675评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,029评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,683评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,704评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,666评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,773评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,413评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,016评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,204评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,083评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,503评论 2 343

推荐阅读更多精彩内容