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)      ...

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

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

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

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

JAVA面向对象5:final关键字、抽象类和接口

final关键字1、final关键字修饰类Java中的类被final关键字修饰后,该类将不可以被继承,也就是不能够派生子类。 案例1://使用final关键字修饰Animal类 final clas...

黑马程序员_Java基础_面向对象(继承、子父类变量和函数以及构造函数特点、final关键字、抽象类、模版方法模式、接口)

------- android培训、java培训、期待与您交流! ---------- 一、面向对象(继承) 继承: 1.提高了代码的复用性。 2.让类与类之间产生了关系。有了这个关系,才有了多态...

Java基础(面向对象三——继承、final关键字、抽象类、接口)

一、继承 继承:继承是面向对象的三大特点之一,当多个类中存在相同的属相和行为时,可以把这些共有的内容抽取到单独一个类中,那么多个类无需在定义这些属性和行为,只需要使用extends关键字继承抽取出来...
  • zzamk
  • zzamk
  • 2015-03-10 10:19
  • 688

NO8.java笔记【面向对象、抽象类、abstract、接口、interface、多态 、内部类、匿名内部类、异常、Object类】

/** 面向过程:1.打开冰箱 2.存储大象 3.关上冰箱。强调的过程(动作、功能、函数)。 面向对象:强调的是对象(实体)。冰箱【1.打开 2.存储 3.关闭】 调用 特点:1.面向对象就是一种常见...

18天Java学习---15.面向对象编程10-Java中final关键字,抽象类与接口

抽象类与接口是Java中最重要部分之一,这里用较大的篇幅来做下这部分的笔记. 1. final关键字       在Java中, 可以使用final关键字修饰类、方法以及成员变量。       ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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