面向对象

一.三大特征:
1.封装: 把数据封装起来,不让外面随便访问
2,继承: 子类继承父类,有共同点
3.多态: 事物存在的多种形态

public 公共的,所有类都可以访问;
private 私有的,只有本类可以访问
protected 同一包,当前类,子孙类可以访问
default 同一个包内,本类可以访问
不同包调用,要导包

private 私有属性,要set,get方法
this. 当前的实例
3.final
final 加到变量上,就成为常量;不能修改
final 加到方法前,这个方法不能被子类覆盖(不能重写)
final 加到类前,表示这个类不能被继承
二. 继承
1.* A:this和super都代表什么

  • this:代表当前对象的引用,谁来调用我,我就代表谁
  • super:代表当前对象父类的引用
  • B:this和super的使用区别
  • a:调用成员变量
    *this.成员变量 调用本类的成员变量,本类没有也可以调用父类的成员变量
  • super.成员变量 调用父类的成员变量
  • b:调用构造方法
  • this(...) 调用本类的构造方法
  • super(...) 调用父类的构造方法
  • c:调用成员方法
  • this.成员方法 调用本类的成员方法,也可以调用父类的方法
  • super.成员方法 调用父类的成员方法
    2.重载和重写的区别
  • A:方法重写注意事项
  • a:父类中私有方法不能被重写
  • 因为父类私有方法子类根本就无法继承,既然子类无法继承,就谈不上重写了
  • b:子类重写父类方法时,访问权限不能更低
  • 最好就一致
  • c:父类静态方法,子类也必须通过静态方法进行重写
  • 子类重写父类方法的时候,最好声明一模一样。
  • Override和Overload的区别?Overload能改变返回值类型吗?
  • overload可以改变返回值类型,只看参数列表
  • 方法重写:子类中出现了和父类中方法声明一模一样的方法。与返回值类型有关,返回值是一致(或者是子父类)的
  • 方法重载:本类中出现的方法名一样,参数列表不同的方法。与返回值类型无关。
  • 子类对象调用方法的时候:
  • 先找子类本身,再找父类。
    2.静态优先于非静态,父类优先于子类,构造代码块优先于构造方法
    三.多态
  • A:多态(polymorphic[,pɒlɪ'mɔːfɪk])概述
  • 事物存在的多种形态
  • B:多态前提
  • a:要有继承关系。
  • b:要有方法重写。
  • c:要有父类引用指向子类对象。father f = new son(); ///////向上转型
    1.多态中的成员访问特点之成员变量
    成员变量
    编译看左边(父类),运行看左边(父类)
    成员方法
    编译看左边(父类),运行看右边(子类)。///////////////动态绑定
    静态方法
    编译看左边(父类),运行看左边(父类)。
    (静态和类相关,算不上重写,所以,访问还是左边的)
    只有非静态的成员方法,编译看左边,运行看右边
    2.instanceof 判断前面这个对象是否属于后面这个类
if (animal instanceof Dog) {
     System.out.println("这是一条狗");
     Dog d = (Dog)animal;
     d.bite();
}else if (animal instanceof Cat) {
     System.out.println("这是一只猫");
     Cat c = (Cat)animal;
     c.bite();
}

3.static关键字
(1)被static关键字修饰的成员,属于该类中所有对象的共享内容可以直接用类名调用,也可以用对象调用,但是建议用类名调用
(2)随着类的加载而加载,优先于对象存在:随着字节码文件的加载而加载的,那时候还没有对象呢
(3)静态修饰的内容一般我们称其为:与类相关的,类成员(静态变量:类变量,静态方法:类方法)
(4)在静态方法中是没有this关键字的(因为this指的是一个具体的对象,而静态在加载到内存时还没有具体的对象)
(5)静态方法只能访问静态的成员变量和静态的成员方法,非静态的成员方法既可以方法静态的成员方法和成员变量,又能访问非静态的成员方法和成员变量
简单记忆:静态不能访问非静态
4.组合是 has a 的关系,继承是is a的关系(我有一条狗,,,,,,,,,狗继承动物)
优先使用组合,因为他灵活
继承尽量不要超过三层
5.abstract 关键字

  • A:抽象类概述
  • 抽象就是看不懂的 ,不能被实例化
  • B:抽象类特点
  • a:抽象类和抽象方法必须用abstract关键字修饰
  • abstract class 类名 {}
  • public abstract void eat();//当不知道该方法具体是怎么实现的
    //比如动物吃,你知道它吃什么吗?怎么吃?都不知道
  • b:抽象类不一定有抽象方法,有抽象方法的类一定是抽象类或者是接口
  • c:抽象类不能实例化那么,抽象类如何实例化呢?
  • 按照多态的方式,由具体的子类实例化。其实这也是多态的一种,抽象类多态。
  • d:抽象类的子类
  • 要么是抽象类
  • 要么重写抽象类中的所有抽象方法
  • A:抽象类的成员特点
  • a:成员变量:既可以是变量,也可以是常量。abstract是否可以修饰成员变量?不能修饰成员变量
  • b:构造方法:有。
  • 用于子类访问父类数据的初始化。
  • c:成员方法:既可以是抽象的,也可以是非抽象的。
  • B:抽象类的成员方法特性:
    *a:抽象方法 强制要求子类做的事情。/////子类必须实现
    publicabstractvoidmethod();// 抽象方法只要定义就行,不要具体的实现
  • b:非抽象方法 子类继承的事情,提高代码复用性。////子类可以直接使用
    接口的方法都是抽象的
    1.接口
    接口特点
  • a:接口用关键字interface表示
  • interface 接口名 {}
  • b:类实现接口用implements表示
  • class 类名 implements 接口名 {}
  • c:接口不能实例化
  • 那么,接口如何实例化呢?
  • 按照多态的方式来实例化。
  • d:接口的子类
  • a:可以是抽象类。但是意义不大。
  • b:可以是具体类。要重写接口中的所有抽象方法。(推荐方案)
    接口与类相似点:
    一个接口可以有多个方法。
    接口文件保存在.java结尾的文件中,文件名使用接口名。
    接口的字节码文件保存在.class结尾的文件中。
    接口相应的字节码文件必须在与包名称相匹配的目录结构中。
    接口与类的区别:
    接口不能用于实例化对象。
    接口没有构造方法。
    接口中所有的方法必须是抽象方法。
    接口不能包含成员变量,除了static和final变量。
    接口不是被类继承了,而是要被类实现。
    接口支持多重继承。
    *A:接口成员特点
    *成员变量只能是常量,并且是静态的并公共的。
  • 默认修饰符:public static final
  • 建议:自己手动给出。
  • 构造方法:接口没有构造方法。
  • 成员方法:只能是抽象方法。//////接口的方法都是抽象的
  • 默认修饰符:public abstract
  • 建议:自己手动给出。
    3.defualt关键字
default void report() { //加defalut 可以声明方法
System.out.println("汇报相关数据");
}

2.内部类
内部类访问特点

  • a:内部类可以直接访问外部类的成员,包括私有。
  • b:外部类要访问内部类的成员,必须创建对象。
  • 外部类名.内部类名 对象名 = 外部类对象.内部类对象;
    out.int oi - new out().new int();
    oi.方法();
    3.静态成员内部类
  • static
  • B:成员内部类被静态修饰后的访问方式是:
  • 外部类名.内部类名 对象名 = 外部类名.内部类对象;
    Outer.Inneroi=newOuter.Inner();
    //外部类是一个普通类,但是内部类是一个静态类,那么一个普通类访问静态成员时可以用类名.的方式,

4.(成员内部类私有使用)

  • private:在外部不能直接创建内部类对象了

5.局部内部类:(外部类里面方法里的类)

3.匿名内部类;

  • A:匿名内部类
  • 就是内部类的简化写法。
  • B:前提:存在一个类或者接口
  • 这里的类可以是具体类也可以是抽象类。
  • C:格式:

new 类名或者接口名(){
重写方法;
}

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

推荐阅读更多精彩内容

  • 1 面向对象No6 面向对象 OO Object Oriented 编程时以对象为单元,封装数据和逻辑,以此提...
    征程_Journey阅读 1,132评论 0 2
  • 1.面向对象思想的特点 (1)是一种更符合我们思想习惯的思想(懒人思想,我把事情自己不做,交给别人去做) (2)可...
    梦游的沙师弟阅读 402评论 0 0
  • 什么是对象 1.对象的概念:对特定一个存在事物2.什么是面向对象:以自我为中心对待一个特定事物存在,需要自己描述出...
    joshul阅读 688评论 0 1
  • Java基础笔记(一) 面向对象 [TOC] 1、定义类 其中的修饰符可以是public、final、abstra...
    小小少年Boy阅读 359评论 0 1
  • 以下是《疯狂Java讲义》中的一些知识,如有错误,烦请指正。 Java8增强的包装类 自动装箱就是把一个基本类型的...
    hainingwyx阅读 392评论 0 0