还剩22页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
Day09总结:上午final关键字Eg:代码实现Class FuFinalvoid method//code…访问低层代码}Class Ziextends FuVoidmethodSopnhahaH;
1、以上代码体现出继承的弊端,由于父类的method的措施访问了系统的低层代码当子类对其覆写,就不会去访问父类的meth的措施,直接用自己的method这样就出现了代码的System.out.println,codeH;class Managerextends Employeeprivate double bonus;ManagerString name,String id,double paysupername,id,pay;this.bonus=bonus;public void workSystem.out.printlnnmanageH;
4、接口格式interface{}
1、体现特点:
2、里面的措施都是抽象的接口中的组员均有固定的修饰符,最常见的组员全局常量抽象措施只是最常见,不代表只有它们没有其他的,全局常量,共有时不需要对象,直接用接口调用时,不可变的体现形式Public staticHnal
3、抽象措施public abstract
4、接口的组员都是public的
5、接口是不可以创立对象的就相称于是抽象的特殊体现形式(不过有区别和抽象类)
6、类与类之间是继承关系,类与接口之间是实现关系
7、接口的出现可以多实现,防止了单继承的局限性一种类在继承一种类的同步,还可以实现多种接口、接口与接口之间是继承关系,并且可以多继承,认为接口的措施都没有主体
1、思想特点
2、对外暴露的规则外设要介入计算机中,由于计算机外面提供了接口,这就是规则
2.程序的功能扩展
3.减少了耦合性
4.用来多实现结合电脑主板的思想进行论述,它是个规则,对外提供的规则它提高了我们功能的扩展性,减少了耦合性主板和声卡主板使用规则,声卡实现规则与抽象类的区别抽象类有单继承的I局限性,接口没有java对多继承记住改良,以多现实接口日勺方式来体现差异多继承由于父类中有相功能时,会导致不确定性为何可以实现多实现?由于继承中父类的措施有措施体?这才是导致不确定性的主线原因,而此处是没有措施体H勺代码体现interface A//int show;//这样是不可以叽无法覆盖void show;interface B//void method;void show;//当有反复日勺措施时不过此时子类复写它是可以的,为何?//由于继承中父类的措施有措施体这才是导致不确定性口勺主线原因而〃此处是没有措施体日勺class Cextends Dimplements A,B〃多实现此时c必须覆盖两个措施public voidshow{}//public voidmethod{}//一种类在继承一种的类H勺时候还可实现多实现class Dpublic void functionQ;〃接口之间是可以继承,并且支持多继承interface InterAvoidshowA;interface InterBvoidshowBQ;interface InterCextends InterAJnterB//为何此处可以实现多继承,由于措施没有主体void showC;class InterfaceDemo2public static void mainString[]argsC c=new C;c.show;System.out.printlnnHello World!n;抽象类和接口之间欧I区别共性它们都是不停抽取出来的抽象非概念区别
1.抽象类只能被单继承、接口可以被多实现,防止了单继承的局限性
2.抽象类中可以定义抽象措施,和非抽象措施,它可以用于定义体系的基本共性的内容接口中只能定义抽象措施,它重要用于对象的功能的扩展
3.抽象类是继承关系,是is a关系,接口是实现关系是like a关系
4、抽象类中的组员修饰符都是自定义的,接口中的修饰符都是固定的记住不要把接口狭义的理解为interface,应当理解广义些,就是对外提供的规则,但凡对外暴露的都可以是接口实现代码
1.abstract class犬public abstractvoid吃饭;public abstractvoid吼叫;}interface搜爆public void搜爆;class搜爆犬extends犬implements搜爆〃这是即具有了犬欧I基本特性,又具有了搜爆功能public void搜爆{}public void吃饭{}public void吼叫{}class搜爆猫extends猫implements搜爆public void搜爆0{}记住类里面都是定义的I某些基础内容,接口里面都是定义某些特性内容,这样的I以便了对其进行扩展//抽烟的学生,抽烟是额外功能
2.abstract classStudentabstract void study;interface Smokingvoid smoke;}class SomkeStudentextends Studentimplements Smokingpublic voidstudy{}public voidsmoke{}〃烟民学生烟民问题领域不一样,对象的属性和行为也不一样abstract classSomkerabstract voidsmoke;interface Studyvoidstudy;}class StudentSmokerextends Smokerimplements Studypublic voidsmoke{}public voidstudy{}}多态重点掌握定义某一类事物的1多种存在形态代码实现class动物class猫extends动物猫x=new猫;动物y=new猫;//父类区I引用变量指向了其子类的对象多态在代码中日勺体现,父类或者接口日勺引用指向了自己日勺子类对象实现代码class Animalabstractvoid eat;class Dogextends Animalvoideatsop“啃骨头void lookHomesop看家class Catextends Animalvoideatsop(”吃鱼)void catchMousesop(抓老鼠)class Pigextends Animalvoideatsop(“猪饲料)不严谨性,因此此时需要用final关键字进行修饰
2、注意为何不把类加final修饰,由于也许该类中会出现诸多功能有些是不需要被覆写时有些是被调用的因此只能根据自己所需对对应的组员进行修饰
1、Final的特点
2、final是一种修饰符,可以修饰类、措施、变量(组员变量、局部变量)
3、Final修饰的I类不可以被继承
4、Final修饰的措施不可以被覆盖Final修饰的变量是一种常量,只能被赋值一次是为了增强阅读性,只要数据是固定的,就将这个数据用一种名称来表达,并用final修饰常量名称都是大写字母,多种单词构成时用下划线来分隔代码体现Eg:Class Zi(Static final int num=90;//必须对变量进行初始化,不懂得要最终化哪个值,因此必须对它进行初始化加静态也是同样的,同样的道理,并且被初始化,此时静态和final没有必然的联络当变量被final修饰时,阐明变量已经是一种常量值,此时不能被修饰,可以用static来修饰Public statidouble PI=
3.14;Void methodsop”拱地class DuoTaiDemopublic staticvoidmainString[]args//Cat c=new Cat;//c.eat;//Cat cl=new Cat;//cl.eat;//methodc;//methodcl;重要知识点:----开发都用!Animal a=new Cat;〃此处猫对象类型自动向上提高一向上转型,当指向使用体系基本功能时,可以向上转型操作为何体现多态性?首先猫是一种实体,是一种猫类型,由于有了继承,是动物中口勺一种,把这个实体称之为动物也可以,因此它具有了两种形态,猫和动物这便是体现了多态性〃一旦向上转型,猫就不是猫了,已经是动物类型了a.catchMouse;//编译失败不过目前想执行猫时抓老鼠的功能怎么办?向下转型Cat c=Cata;〃向下转型当使用子类对象中欧I特有内容时,才做向下转型c.eat;c.catchMouse;〃此时是可以实现猫的抓老鼠丛J功能的总结在多态转型中,至始至终只有子类对象做着类型的变化methodnew Cat;publicstaticvoid methodAnimal a//Animala=new Cat;重点知识点instanceofifa instanceofCat//对象instanceof类型判断详细对象与否是指定的类型Cat c=Cata;〃编译通过,不过不能运行,此时类型转换异常classCastException;〃此时为了程序的严谨性,需要对传入日勺的对象进行判断c.catchMouse;else ifainstanceof DogDogd=Doga;d.lookHome;a.eat;总结instanceof是一种关键字,用于判断对象的类型什么时候用?当进行向下转型时,先判断该对象与否符合被转成的子类型
1、重点理解多态的好处提高了代码的扩展性,有了多态,前期设计好的内容可以使用后期出现的子类内容,对于指挥对象做事情这件事情,假如对象诸多,指挥起来很麻烦,抽取对象的共性类型,对该类型的事物进行指挥就会变的很简朴多态的I前提
1、必须要有关系继承、实现
2.必须有覆盖的操作
3.多态的弊端前期的程序虽然可以使用后期出现的子类内容,不过只能使用子类覆盖父类中的内容,不能使用子类中的特有内容Final intx=4;X=8;Sopnum;//既然是在操作一种固定的值为何不把4直接写在此处,假如这样做的代I话,阅读性极差,你主线就不懂得它所代表什么?为了增强阅读性,此时数据是不变化H勺,因此我们需要给它起个名字,并且用final来修饰这样H勺话它也是固定H勺不变日勺注意被final修饰的数值只能被覆写一次,并且修饰H勺常量名所有大写,多种单词构成时用下划线进行分隔Eg:finalintPERSON_AGE=4;
3、抽象类特点
1、没有措施体的措施,称为抽象措施,必须寄存在抽象措施类中,抽象措施和抽象类必须用abstract关键字来修饰,抽象类不可以被实例化,为何?由于调用抽象措施没故意义?为何?由于它连措施体都不存在?抽象类必须由其子类将抽象类中的抽象措施都覆盖后,其子类才可以被实例化,否则该子类还是抽象类Eg:Abstract classDemoAbstract voidshow;Class SubDemo extends DemoVoid show{}〃此时把父类中抽象措施覆盖,此时才能被实例化例如水果,它就是抽象的,不详细它包括多种各样的水果,每种水果有它自己日勺体现
1、抽象类波及的问题?抽象类中与否可以定义非抽象日勺措施?可以首先抽象类是一种类,类是用来描述事物,只不过描述事物过程中有些信息不详细,抽象类和一般类异同点
2、相似抽象类和一般类都用于描述事物,都可以定义组员
3、不一样抽象类中可以定义抽象组员函数,抽象要么修饰类要么修饰函数而一般类不可以
4、抽象类不可以实例化,一般类可以实例化
5、抽象类中与否有构造函数?
6、有,并且抽象类虽然自身不可以被实例化,不过其子类覆盖了所有的抽象措施后,是可以实例化日勺因此抽象类日勺构造函数是用于给其子类对象进行实例化抽象类一般都是一种父类?是、由于需要子类去覆盖父类中的抽象措施代码体现Abstract classDemo{Abstract voifshow1;Abstract voidshow2;Abstract classSubDemoextendsDemoVoidshow1;Class Testextends SubDmeoVoidshow2;抽象类中可不可以不定义抽象措施?可以;看上去没有什么意义,其实有点意义,就是不让这个类创立对象,为何不让创立?代码体现interface InterTest//这是一种测试接口,有4种测试方式void test1;void test2;void test3;void test4;abstract class InterTestlmpl implementsInteiTest〃用这个类进行所有日勺空实现不过创立对象是毫无意义H勺因此用抽象public void testl{}public void test2{}public void test3{}public voidtest4{}class Test2extends InterTestlmplpublic voidtest2{}class Test3extends InterTestlmplpublicvoidtest3{}classInterTestlmplimplements InterTestpublicvoidtest2//sopntestimpl test2n;publicvoidtestl{}〃这样做实现太麻烦代码反复怎样改善?publicvoidtest3{}publicvoidtest4{}*/抽象关键字不可以和那些关键字共存?Final:修饰了类是一种最终类,不可以被继承,然后abstract修饰的类必须是父类,需要被继承、冲突、非法日勺修饰符组合,abstract和finalStatic:抽象措施被static修饰,就具有了可以被类名直接调用时的特点,不过抽象措施被调用没故意思Priavte由于抽象措施被私有,无法被覆盖代码体现雇员实例需求企业中程序员有姓名、工号、薪水、工作内容项目经理除了姓名、工号、薪水、尚有奖金、工作内容进行数据建模做问题领域的分析就是找出问题领域的对象分析在这个问题领域中有两个对象程序员属性姓名,工号,薪水行为工作内容项目经理属性姓名、工号、薪水、奖金行为工作内容这时候不能用项目经理去继承程序员由于职能不一样,不过有共性,只能抽取就有了员工属性姓名,工号,薪水行为工作内容abstract classEmployee private String name;privateString id;privatedouble pay;EmployeeString name,String id,doublepaythis.name=name;this.id=id;this,pay=pay;public abstractvoidwork;//工作内容是无法懂得的class Programmerextends EmployeeProgrammerStringname,Stringid,double paysupername,id,pay;publicvoidwork。
个人认证
优秀文档
获得点赞 0