内部类

<small>
1、多态
1)、两种表现形式:
a、一个对象,多种形态。
同一个对象,在不同场合下,
表现出不同的形态,能完成不同的功能。

    在java中,往往使用implements关键字,实现多个接口。

    //同一个人
    CC peo = new CC();
    
    //同一个人,在不同的场合,表现出不同的形态
    //不同角色,表现的行为也不一样。
    Teacher teacher = peo;
    teacher.teach();//老师可以讲课
    
    Father father = peo;
    father.talkToSon();//父亲教育孩子
    
    Husband husband = peo;
    husband.giveMySalary();//丈夫上交工资

b、多个对象,同一形态。
    不同对象,向上造型成同一种类型。
    实现相同的功能。
    
    在java中,往往使用extends关键字,继承同一个父类。

    Tiger tiger = new Tiger();
    tiger.name = "小王";
    
    Snake snake = new Snake();
    snake.name = "莽山烙铁头";
    
    Lion lion = new Lion();
    lion.name = "东北狮王";
    
    //不同对象,表现出同一种形态。
    Animal animal1 = tiger;
    Animal animal2 = snake;
    Animal animal3 = lion;

2、引用类型强制类型转换
回顾:基本类型强制类型转换
long l = 1000;
int i = (int)l;
byte b = (byte)i;//溢出

Animal animal = new Tiger();
animal.name = "小王";
    
//引用类型强制类型转换
Lion lion = (Lion)animal;//错误,会导致类型转换异常ClassCastException

instanceof关键字:
可用于在引用类型转换之前,实现类型判断。
符合转换匹配的类型,方能实现强制类型转换。

有效的避免了引用类型转换异常的发生。

语法:
大类型 大类型引用 = new 小类型();

if(大类型引用 instanceof 小类型){//类型判断
    //类型匹配
    小类型 小类型引用 = (小类型)大类型引用;
}
    
//引用类型强制类型转换
Lion lion = (Lion)animal;//错误
改造成
if(animal instanceof Lion){
    //只有匹配才能进来
    Lion lion = (Lion)animal;
}

3、方法重写要求:
a、发生在子父类之间
b、方法名相同、参数列表相同
c、访问权限不能变小
d、抛出异常不能变大
e、返回值类型可以是本类或其子类

********************** pm ************************
1、内部类
class:类
class:实体类
abstract class:抽象类

1)、内部类
定义在类内部的类,称为内部类。
类内部:
类体、方法体。

2)、内部类定义
外部类:定义了内部类的类。
内部类:定义在外部类中的类。

class Outer{//外部类
    class Inner{//内部类

    }
}
只要是类,类中可定义:成员变量、方法、静态块。

3)、内部类的使用
a:创建内部类对象
step1:先创建外部类对象。
step2:再通过外部类创建内部类对象。

b、在外部类外面
对内部类属性使用、方法调用
与普通类的属性使用、方法调用一致。
通过引用.属性,引用.方法

c、内部类中(**注意)
调用内部类属性:this.属性;
调用外部类属性:外部类名.this.属性;

4)、内部类意义
封装在内部类的中代码,不可以直接访问,必须先创建
外部类对象,通过外部类对象创建内部类对象,才能访问。
一定程度上,起到了代码保护效果。

PS:普通内部类很少使用。

2、匿名内部类
1)、匿名内部类

    class Outer{//外部类
        class {//匿名内部类??????
}
    }
上述定义是错误的。

2)、匿名内部类定义
某个类的匿名内部类,并非直接在类中定义。
在外部类对象创建的时候定义。
step1:先创建外部类对象
OuterClass outer = new OuterClass();
step2:在外部类创建对象的()与;中间,
添加一对{},则{}即为匿名内部类类体。
step3:匿名内部类中可以定义属性、方法。

3)、匿名内部的使用。
匿名内部类属性,只能在匿名内部类中使用。

匿名内部类的方法,无法直接“调用”。
   只能通过匿名内部类重写外部类的方法,才能调用。

4)、****什么时候使用匿名内部类?
抽象类、接口都是无法实例化的。

抽象类 引用 = new 抽象类();//不可以
接口 引用 = new 接口();//不可以

如何实现抽象类、接口的“实例化”?
    都是先让实体类继承抽象类,实现类实现接口,
    然后通过向上造型方式,完成抽象类、接口的“实例化”。
    抽象类 引用 = new 实体类();//可以
    接口 引用 = new 实现类();//可以
    
如果抽象类的实体类、接口的实现类,极少使用,
那作为单独一个类出现就没有多大意义。

实体类、实现类就可以通过匿名内部类方式来实现。

2、封装
封装不是单纯的知识点,而是一种思想。
方法:对特定功能代码的封装
类:对具有相似特征,相同行为的对象群体的封装。
对象特征 → 类的属性
对象行为 → 类的方法

子父类:对继承、公有代码的封装。
抽象方法:对没有具体实现的方法进行封装。
抽象类:对具有抽象方法的类、对代码需要保护的类的封装。
接口:对规范、标准的封装。
内部类:对代码保护封装
匿名内部类:对抽象类的实体类、接口的实现类的封装。

单独“封装知识点”:
对于私有属性、私有方法,进行封装。

step1:采用private访问权限修饰。
    对属性、方法,起到只能在本类中才能使用。

step2:属性赋值
      方式一:
    通过构造方法,创建对象的同时,
    给私有属性赋值。

      方式二:
    当属性添加private访问权限时,则需要
    对外提供统一的赋值、取值的方法入口。

    赋值:set方法
    取值:get方法

step3:编写set、get方法
    a、set方法:
    private String name;

    public void setName(String name){
        this.name = name;
    }

    b、get方法:
    public String getName(){
        return this.name;
    }


步骤:
1、对私有属性进行private私有化操作。
2、对私有属性向外提供统一的入口方法:set、get方法

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

推荐阅读更多精彩内容

  • Java 内部类 分四种:成员内部类、局部内部类、静态内部类和匿名内部类。 1、成员内部类: 即作为外部类的一个成...
    ikaroskun阅读 1,203评论 0 13
  • 一、继承 当两个事物之间存在一定的所属关系,即就像孩子从父母那里得到遗传基因一样,当然,java要遗传的更完美,这...
    玉圣阅读 1,042评论 0 2
  • 一、多态 1. 概述 理解:多态可以理解为事物存在的多种体(表)现形态。例如:动物中的猫和狗。猫这个对象对应的是猫...
    陈凯冰阅读 332评论 0 1
  • We believe that writing is about content, about what you ...
    hongXkeX阅读 266评论 0 0
  • 斜风起,细柳柔。 日落人去欲还休,眉低皱,问君为谁忧?唤醒许多愁。 秋雨落,随波流。 黄叶飘零华珠露,欲解忧,纵然...
    雨韩阅读 451评论 44 24