#千峰#days10多态、抽象、接口

匿名对象:
。当对象只被调用一次方法时,使用匿名对象
。当对象作为参数传递时,使用匿名对象

封装
。将多个相似功能的写在一个类中
一、多态
。在多态的情况下,子类如果重写了父类的方法,那么无论如何执行的都是
子类的方法(全遮挡)
1、定义:
。一个事物的多种形态
2、多态的前提:
。要有子父类关系
。要有方法重写
。要有父类引用指向子类对象

pulic class Father{
    public void method(){
        System.out.println("父类method方法");
    }
}

//子类继承父类

public class Son extends Father{
    //重写父类的方法
    public void method(){
        System.out.println("子类的method方法");
    }
}
public static void main(String[] args){
    //父类类型的变量引用子类类型的实例对象
    Father father = new Son();
    father.method();
}

3、注意事项
。可以做哪些工作看父类类型
。实际做工作的看子类对象
。优点:提高了代码的扩展性、复用性、可以当做形参,用来
接受任意类型的子类对象
。缺点:不能使用子类的特有属性和方法
4、演示:
。学校有授课功能,但是需要聘请老师讲课,编程模拟

public class School{
    
    public void teach(Teacher teacher){
        teacher.teach();
    }
}

public class Teacher{
    public void teach(){
        System.out.println("老师上课");
    }
}

public class MusicTeacher extends Teacher{
    public void teach(){
        System.out.println("没有的歌声从教室传来");
    }
}

public class MathTeacher extends Teacher{
    public void teach(){
        System.out.println("认真的讲解每一个运算步骤");
    }
}

public statcic void main(String[] args){
    School s = new School();
    //调用学校的授课功能,传递一个音乐老师过去
    s.teach(new MusicTeacher());
    //调用学校的授课功能,传递一个数学老师过去
    s.teach(new MathTeacher());
}

二、多态成员访问的特点
1、成员变量
。编译看左边(父类),运行看左边(父类)(静态绑定)
。一般情况使用极少,成员变量一般都是私有化的

2、成员方法
。编译看左边(父类),运行看右边(子类),动态绑定
。能执行哪些方法看左边的父类类型,具体执行哪个方法,看子类对象

3、静态方法
。编译看左边(父类),运行开左边(父类)

三、多态转型
1、向上转型
。将子类对象看作是父类类型,也就是我们平时使用的多态形式
。这种情况下,无法调用子类特有的功能
2、向下转型
。将父类引用指向的子类对象再转回子类类型
四、final关键字
1、定义:
。final表示最终的,无法被修改的

2、final修饰的特点:
。修饰类,类不能被继承
。修饰变量,变量就变成了常量,只能被赋一次值(初始化时候赋值)
。修饰方法,方法不能被重写

3、final修饰局部变量
。基本数据类型,是值不能被改变
。引用数据类型,是地址值不能被改变,对象中的属性可以改变
。fianl可以修饰形参

4、final修饰成员变量的初始化时机
。必须手动赋值
。对象初始化完毕之前
。类初始化完成前(静态)

五、抽象类:记录业务,思考过程
。抽样类的非抽象方法:一般是核心业务
1、定义:
。抽象类没有具体的代码实现,只是规定了方法的基本属性,然后由
子类区去实现具体的代码,抽象类主要是为了定义规则而存在的。
2、特点:
。抽象类和抽象方法必须用abstract关键字修饰
。abstract class 类名{}
。abstract 返回值类型 方法名();
。抽象方法就是指一个没有具体代码的方法,没有大括号,以; 号
结束,必须以abstract来表表明当前是一个抽象类
。如果一个类中有抽象方法,那么这个类必须是抽象的,是为了
安全。
。加了abstract关键字的类,不予许创建对象
。抽象类不一定有抽象方法,有抽象方法的类一定是抽象类或者接口
。抽象类不能实例化,必须有子类继承并重写抽象方法来实现
。抽象类的子类
。要么是抽象类
。要么重写抽象类中的所有抽象方法(普通类)

3、抽象类成员方法的特点
。抽象方法,强制要求子类做的事情
。非抽象方法,子类继承的方法,提高代码的复用性
4、优点:
。强制子类实现父类的方法功能
。提高代码的扩展性,便于后期的维护
。形成一套规范(重点)
5、定义抽象类的过程,我们一般称之为定义规则的过程

六、java值传递的三种方式
1、基本数据类型值得传递
。基本数据类型传递的是值,也就是将具体的值赋给变量名,所以变量
名代表的是具体的值
2、引用数据类型传递的是地址值
。当一个对象赋值给一个对象名,是将这个对象再内存中的地址值传递
给对象名
。实例对象再堆内存中是一个16进制的地址值
3、String值得传递
。String比较特殊,它虽然是一个引用变量,但是它传递的是具体的数

。String首先是在堆内存中创建一个对象,对象里面封装的是常量值
然后将数值放入到常量池中,再指向String
4、总结:
。基本数据类型传递的是值,引用数据类型传递的是址
七、接口
1、定义
。接口其实就是抽象类的升级版,接口里面都是抽象方法
。从狭义上来讲,接口就是值java中的interface
。从广义还是那个的角度讲对外提供规则的都是接口
。作用:制定规则
2、特点:
。接口:比较纯粹的抽象类的简写形式
。接口关键字interface表示
。interface接口名{}
。接口中方法上的abstract关键字可以省略
。类实现接口用implements表示
。class 类名 implements 接口名{}
。接口不能实例化
。接口按照多态的方法实例化
。接口的子类
。可以是接口,使用extends来继承
。可以使抽象类,但意义不大
。可以是实体类,要重写接口中的所有抽象方法(主要使用)
。接口中的成员变量必须是静态的 最终 公共,也就是常量
。static、fianl 关键字可以省略(建议省略)
。接口可以继承接口
//接口1

public interface MyInterface{
    //定义了静态变量static final 可以省略
    static final String NAME = "小红";
    //定义了抽象方法
    public void method();
    //定义了抽象方法
    public void method2();
}

//接口 2 继承了接口1
public interface MyInterface2 extends MyInterface{
    //定义了抽象方法
    public void method2();
}
//定义实现类实现接口
public class MyInterfaceSon implements MyInterface2{
    //重写抽象方法
    @Override
    public void method(){
        System.out.println("重写method抽象方法");
    }
    //重写抽象方法
    @Override 
    public void method2(){
        System.out.println("重写method2抽象方法");
    }
}

八、类、接口之间的关系
1、类与类
。继承关系,只能单继承,不能多继承,但是可以多层继承
。多层继承:子类继承父类,父类继承父类
。如果多个父类出现相同的方法,无法区别
2、类与接口
。实现关系,可以单实现,也可以多实现,在继承类的同时,可以多实

。多个接口中出现了名称和参数列表相同的方法,但是返回值不同,会
报错
3、接口与接口
。继承关系,可以单继承,也可以多继承
。如果多个父类中出现了相同的,子类用谁的都可以

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

推荐阅读更多精彩内容