java自学笔记之抽象类,接口,对象的多态性,instanceof关键字

原创 2013年12月03日 00:02:09
interface A
{
全局常量;
抽象方法;
}


全局常量  final static
抽象方法  abstract


一个子类可以有多个接口(public C implements A,B{})
一个子类只能有一个父类(public C extents A{})


一个子类同时继承抽象类和实现接口
class 子类 extends 抽象类 implements 接口A,接口B{}
在使用时,一个抽象类可以实现一个接口,那么对于抽象类的子类则就必



同时覆写接口和抽象类 中的所有方法




calss 子接口 implements 接口B,接口C{}


一个抽象类可以实现多个接口 但是一个接口不能继承一个抽象类
接口中的抽象方法可以不 加入abstract关键字   但是抽象类中必须加入


abstract关键字




对象的多态性
1.向上转型:子类对象——》父类对象
对于向上转型,程序会自动完成,
格式: 父类 父类对象 = 子 类实例


注意::转型之后因为操作是父类对象,所以无法找到在子类中定义的方





2。向下转型:父类对象——》子类对象
对于向下转型时,必须明确指明要转型的子类类型
格式: 子类 子类对象 = (子类)父类实例


注意:: 想要发生向下转型那么一定要先发生向上转型,“A a = new B


()”表示建立关系


1、向上转型关系
class A 
{
public void fun1()
{
Syetem.out.println("A-->fun1");
}
public void fun2()
{
fun1();
}
}
class B extents A
{
public void fun1()
{
System.out.println("B -->fun1");
}
public void fun3()
{
System.out.println("B-->fun3");
}
}




class C extents A
{
public void fun1()
{
System.out.println("B -->fun1");
}
public void fun5()
{
System.out.println("B-->fun5");
}
}
public class Demo
{
public static void main(String args[])
{
B b = new B();
b.fun1(); //输出:B-->fun1
A a= b;//发生了向上转型关系
a.fun1();//输出:B-->fun1
a.fun2();//输出:B-->fun1
//a是父类对象 只能输出fun1和fun2 不能输出fun3
B b1 = (B)a;
b1.fun1();
b1.fun2();
b1.fun3();//这时是子类的对象 可以访问子类中定义


的方法
fun(new B());
fun(new C());//这是对象多态性的应用 






A a1 = new B();
System.out.println("A a1 = new B(),a1是A的实例?


"+(a1 instanceof A) );//true
System.out.println("A a1 = new B(),a1是B的实例?


"+(a1 instanceof A) );//true
A a2 = new A();
System.out.println("A a1 = new B(),a1是A的实例?


"+(a1 instanceof A) );//true
System.out.println("A a1 = new B(),a1是B的实例?


"+(a1 instanceof A) );//false


}
public static fun(A a)
{
a.fun1();
if(a instanceof B)
{
B b = (B)a;
b.fun3();
}
if(a instanceof C)
{
C c= (C)a;
c.fun5();
       }
}


}




使用instanceof 判断一个对象是否为一个类的实例 -->返回boolean类型


在开发中一定要注意,对于向下转型的操作最好增加验证,以保证转型时


不会发生ClassCastException
如果现在要增加新的子类,则肯定要修改fun()方法,这样一来程序就


失去了灵活性,所以在程序的开发中重点应该放在父类上,只要父类设计


的足够合理,则开发肯定会非常方便。
而且在开发中一定要记住以下一点
一个类永远不要继承一个已经实现好的类,而只能继承抽象类或


实现接口

面向对象高级续2(instanceof关键字、抽象类和接口的应用、Object类、包装类)

具体内容 在java中可以使用instanceof关键字判断一个对象到底是哪个类的实例。 ·对象 instanceof 类   - ->返回boolean类型;代码如下: class A{ /...

面向对象的故事~数据底层操作告诉了我们接口,抽象类,继承与多态性的使用

这个问题困扰了我很久,很觉得设计的不完善,终于在今天把它彻底解决了,其实就是一个C#里的基础知识问题,主要涉及到了,接口,抽象类,接口继承,类继承,多态等知识。 事件是这样的,我有一个统一接口规...

Java笔记2 面向对象<3>final关键字、抽象类、模板方法模式、接口

07天-07-面向对象(final关键字) l  final:最终。作为一个修饰符: 1)       可以修饰类、函数、变量; 2)       final修饰的类不能被继承。为了避免被继承,...

面向对象高级续1(抽象类、接口的概念、对象的多态性)

抽象类的基本概念 抽象类的定义及使用规则: 概念:包含一个抽象方法的类就称为抽象类; 抽象方法:只声明而未实现的方法称为抽象方法,抽象方法必须使用abstract关键字声明; 抽象类和抽象方法...

面对对象4【抽象abstract】【接口interface】【多态】【instanceof关键字】【Object类】

一、抽象类(AbstractClass) 1、抽象:就是从多个事物中将共性的,本质的内容抽取出来。      简单说:就是看不懂的、模糊的、不具体的事物。 2、抽象类:表示具体功能不明确的,被abst...

黑马程序员 Java基础 面向对象:继承、final关键字、抽象类、模版方法模式、接口、多态、Object类

---------------------- ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------...

Java学习笔记(六)--继承 final关键字 多态 抽象类 接口

继承 1.通过extends关键字可以实现类与类的继承。 格式:class 子类名 extends 父类名{} -父类:基类,超类 -子类:派生类 需求:学生类和老师类(非继承类版代码) ...

【幻化万千戏红尘】qianfengDay09-java基础学习:接口,抽象类,抽象方法,多态,instanceof

课程回顾:   访问修饰符 private--->default--->protected---->public   重写:子类中 1、访问修饰符不能比父类的更严格 2、静态/非静态、返回值类型、方法...

面向对象高级——instanceof关键字的使用以及抽象类与接口的应用

instanceof关键字  需要掌握的要点: 掌握instanceof关键字的作用以及使用时机。 可以使用instanceof对对象的转型进行安全验证。 具体内容: 在Java中可以使用instan...

抽象类 接口区别 多态性 继承 封装

声明方法的存在而不去实现它的类被叫做抽象类(abstract class),它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况。不能创建abstract 类的实例。然...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:java自学笔记之抽象类,接口,对象的多态性,instanceof关键字
举报原因:
原因补充:

(最多只允许输入30个字)