Java学习笔记之继承和接口(二) 继承和多态、接口
2016-05-04 20:04
501 查看
以下是博主学java的时候记的一些笔记,分享给大家,如果有错误或者以为的话,可以在下方留言
继承和多态
使用多态的核心是使用上转型对象,即将Abstract 类声明对象作为其子对象的上转型对象,那么这个上转型对象就可以调用子类重写的方法。
个人理解:其实上转型对象就是一个父类对象,通过子类引用,转换为上转型对象,它可以调用子类重写的方法和继承的方法,也可以调用子类隐藏的变量和继承的变量,使程序更加的简洁。
例:
答案:
接口
接口的声明
interface
接口的名字
接口体中只有抽象方法,没有普通方法,接口体中所有的变量和方法的访问权限一定都是public(允许省略public/abstract修饰符)
接口的使用
用关键字implement来声明自己实现一个或多个接口(多个接口中间用“,”隔开);
例:class A implement B,C,D;
如果一个类实现了某个接口,那么这个类必须重写该接口中的所有方法。
重写的方法的访问权限一定要明显的用public来修饰。
例:
答案:
类重写的接口方法以及接口中的常量可以被类的对象调用,而且常量也可以用类名或接口名直接调用.
如果一个类声明实现一个接口,但没有重写接口中的所有的方法,那么这个类必须是abstract类。
个人理解:如果把类比作是一辆车的话,那么接口就可以比作是一些汽车零件,通过实现这些接口,可以让这辆车更加的强大。
例1:
答案:
例2
答案:
接口与abstract的比较
(1)abstaact类和接口都可以有abstract方法。
(2)接口中只可以有常量,不能有变量,而abstract类中既可以有常量也可以有变量。
(3)abstract 类中可以有非abstract 方法,但是接口不可以。
继承和多态
使用多态的核心是使用上转型对象,即将Abstract 类声明对象作为其子对象的上转型对象,那么这个上转型对象就可以调用子类重写的方法。
个人理解:其实上转型对象就是一个父类对象,通过子类引用,转换为上转型对象,它可以调用子类重写的方法和继承的方法,也可以调用子类隐藏的变量和继承的变量,使程序更加的简洁。
例:
<span style="font-size:18px;"><span style="color:#000000;">package com.CCAr; abstract class Animal{ public abstract void cry(); public abstract String AnimalsName(); } class Simple{ public void playGround(Animal animal){ System.out.println(animal.AnimalsName()+"的声音是:"); animal.cry(); } } class Dog extends Animal{ public void cry(){ System.out.println("汪汪!"); } public String AnimalsName(){ return "狗"; } } class Cat extends Animal{ public void cry(){ System.out.println("喵喵!"); } public String AnimalsName(){ return "猫"; } } public class CCAr { public static void main(String []args){ Simple animal=new Simple(); Animal ani=new Dog(); animal.playGround(ani); ani=new Cat(); animal.playGround(ani); } }</span> </span>
答案:
<span style="font-size:18px;">狗的声音是: 汪汪! 猫的声音是: 喵喵! </span>
接口
接口的声明
interface
接口的名字
接口体中只有抽象方法,没有普通方法,接口体中所有的变量和方法的访问权限一定都是public(允许省略public/abstract修饰符)
接口的使用
用关键字implement来声明自己实现一个或多个接口(多个接口中间用“,”隔开);
例:class A implement B,C,D;
如果一个类实现了某个接口,那么这个类必须重写该接口中的所有方法。
重写的方法的访问权限一定要明显的用public来修饰。
例:
<span style="font-size:18px;">package com.Interface; interface Computer{ int Max=100; int f(int x); } interface Computere{ void max(int x,int y); } class China implements Computer,Computere{ int number; public int f(int x){ int sum=0; for(int i=1;i<=x;i++){ sum+=i; } return sum+Max; } public void max(int x,int y){ //return x>y?x:y; System.out.println("HHHH!"); } } class Japan implements Computer{ int number; public int f(int x){ return 66+x; } } public class Interface { public static void main(String []args){ China zhang=new China(); Japan henlu=new Japan(); zhang.number=991898+Computer.Max; henlu.number=941448+Computer.Max; zhang.number=100+1; zhang.max(1, 2); System.out.println("number:"+zhang.number+"求和"+zhang.f(100)); System.out.println("number:"+henlu.number+"求和"+henlu.f(100)); System.out.println(Computer.Max); } }</span>
答案:
<span style="font-size:18px;">HHHH! number:101求和5150 number:941548求和166 100</span>
类重写的接口方法以及接口中的常量可以被类的对象调用,而且常量也可以用类名或接口名直接调用.
如果一个类声明实现一个接口,但没有重写接口中的所有的方法,那么这个类必须是abstract类。
个人理解:如果把类比作是一辆车的话,那么接口就可以比作是一些汽车零件,通过实现这些接口,可以让这辆车更加的强大。
例1:
<span style="font-size:18px;">package com.ljjiekou; interface Free{ public void shouFree(); } interface Tiao{ public void tiaoWen(); } class Chucar implements Free,Tiao{ public void shouFree(){ System.out.println("两元!"); } public void tiaoWen(){ System.out.println("hair!"); } } class Tuocar implements Free{ public void shouFree(){ System.out.println("不差钱儿!"); } } public class ljjiekou { public static void main(String []args){ Chucar chucar=new Chucar(); chucar.shouFree(); chucar.tiaoWen(); Tuocar tuocar=new Tuocar(); tuocar.shouFree(); Free free=new Chucar(); free.shouFree(); //free.tiaoWen(); free=new Tuocar(); free.shouFree(); } } </span>
答案:
<span style="font-size:18px;">两元! hair! 不差钱儿! 两元! 不差钱儿!</span>
例2
<span style="font-size:18px;">package com.jkdt; interface Advertisement{ public void showAdvertisement(); public String getAd(); } class Adboard{ public void show(Advertisement adver){ System.out.println(adver.getAd()); adver.showAdvertisement(); } } class A implements Advertisement{ public void showAdvertisement(){ System.out.println("没有最好,只有更好!"); } public String getAd(){ return "飞利浦"; } } public class jkdt { public static void main(String []args){ Adboard adboard = new Adboard(); adboard.show(new A()); } }</span>
答案:
<span style="font-size:18px;">飞利浦 没有最好,只有更好!<span style="color:#000000;"> </span></span>
接口与abstract的比较
(1)abstaact类和接口都可以有abstract方法。
(2)接口中只可以有常量,不能有变量,而abstract类中既可以有常量也可以有变量。
(3)abstract 类中可以有非abstract 方法,但是接口不可以。
相关文章推荐
- springmvc中结果的转发和重定向
- ubuntu中启动ecplice老是出现 A java Runtime environment(JRE) or Java Development Kit(JDK)
- 《java入门第一季》之面向对象(面向对象案例详解)
- 《java入门第一季》之面向对象(面向对象案例详解)
- SpringMVC简单配置--HelloWorld例子
- Eclipse常用快捷键
- Java学习笔记之继承和接口(一) super关键字、final关键字、abstract类和方法
- 20145313 《Java程序设计》第十周学习总结
- Java学习笔记之类的、static关键字、访问权限
- java 二进制 文件I/O 2进制和10进制的转换 程序实现 以及移位
- Struts笔记03
- 动态代理记录日志
- [转载]java三种方法拆分字符串
- 从源码理解LinkedHashMap.java
- Struts笔记02
- Struts2笔记02
- HashMap排序题
- Struts2笔记01
- Java基础第三天_数组
- Java学习笔记之数组、枚举