多态:
父类的对象调用子类的方法(类型的转换):利用一种引用管理多个对象。
一个引用在不同情况下的多装状态、
package com.java.Demo;
/**
* Created by jerry on 2017/3/31.
*/
public class Demo1 {
public static void main(String [] args){
Master master=new Master();
master.feed(new Dog(),new Bone());
master.feed(new Cat(),new Fish());
}
}
class Food{
String name;
public void showName(){
}
}
class Fish extends Food{
public void showName(){
System.out.println("鱼");
}
}
class Bone extends Food{
public void showName(){
System.out.println("骨头");
}
}
//主人类
class Master{
//给动物喂食物,使用多态,方法就可以使用一个
public void feed(Animal an, Food f){
an.eat();
f.showName();
}
}
class Animal{
public void cry(){
System.out.println("not know how to cry");
}
public void eat (){
System.out.println("no know what to eat");
}
}
class Dog extends Animal{
public void cry(){
System.out.println("汪汪叫");
}
public void eat(){
System.out.println("狗爱吃");
}
}
class Cat extends Animal{
public void cry(){
System.out.println("喵喵叫");
}
public void eat(){
System.out.println("猫爱吃");
}
}
抽象类,接口,
当父类的一些方法不能确定是,可以用abstract关键字来修饰方法【抽象方法】,用abstract修饰该类。
抽象类不能实例化。(与多态矛盾?)
抽象类可以没有抽象方法
抽象方法不能有主体
接口:
原则:
接口不能被实例化
接口所有的方法都不能有主体(抽象类是命名为abstract的不能有主体)
一个类可以有多个接口
实现接口可以看做是对继承的一种补充。
类是层级式的,不太灵活。
实现接口vs继承父类
单继承
多接口
package com.java.Demo;
/**
* Created by jerry on 2017/3/31.
*/
interface Fish{
public void swimming();
}
interface Bird{
public void fly();
}
class Monkey{
int name;
//跳
public void jump(){
System.out.println("猴子会跳!");
}
}
//小猴子继承猴子的特性但是他也想像鱼一样会游泳
class LittleMonkey extends Monkey implements Fish,Bird{
public void swimming(){
System.out.println("猴子会游泳");
}
public void fly(){
}
}
public class Demo3 {
public static void main(String [] args){
}
}
final概念:
可以修饰变量或者方法
1,当不希望父类的某个方法或者变量被覆盖。
package com.java.Demo;
/**
* Created by jerry on 2017/3/31.
*/
public class Demo1 {
public static void main(String []args){
}
}
class Aaa{
final int a=0;//若果不给初值,a的值是多少
final public void fun(){
System.out.println("this is dun");
}
}
class Bbb extends Aaa{
public void show(){
a++;
}
}