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()方法,这样一来程序就


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


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


实现接口

Java接口和抽象类以及接口的意义,instanceof的利用

接口interface: 1. 在接口中没有变量,成员无论如何定义,都是公共常量,public static final即使不显式声明也如此。 2. 所有接口方法均隐含public abstract即...
  • u011579908
  • u011579908
  • 2017年04月01日 13:37
  • 534

继承、接口、instanceof关键字、内部类

1.存在继承 |--延续、重写、新增 |--方法签名:就近最优原则 |--编译看类型,运行找对象 2.接口 接口是一种特殊的抽象类,接口用关键字interface来标识,其实接口全写出来,前面要加...
  • BENBENMENGMENG123
  • BENBENMENGMENG123
  • 2013年07月17日 12:02
  • 1281

java 接口 抽象类 继承 重载 重写 多态

4.1 抽象类          在面向对象领域由于抽象的概念在问题领域没有对应的具体概念,所以用以表征抽象概念的抽象类是不能实例化的。      同时,抽象类体现了数据抽象的思想,是实现多态的一...
  • u012803478
  • u012803478
  • 2016年07月16日 23:41
  • 1380

Java 抽象类、普通类、接口的区别——值得你一看的干货

【概念】 抽象类、具体类是相对的,并非绝对的。抽象是一种概念性名词,具体是一种可见可触摸的现实对象。概念越小,则其抽象程度就越大,其外延也越大,反之亦然。简单说,比如“人”比“男人”抽象...
  • csdn_aiyang
  • csdn_aiyang
  • 2017年05月04日 16:26
  • 3156

Java之抽象类(abstract关键字)

abstract关键字: 1)用abstract关键字修饰一个类时,这个类叫做抽象类;用abstract关键字修饰一个方法时,这个方法叫关键方法; 2)含有抽象方法的类必须被声明为抽象类,抽象类必...
  • Jarvenman
  • Jarvenman
  • 2017年01月20日 13:31
  • 971

黑马程序员_java如何获取一个类(包括接口和抽象类)的对象

先从问题说起, 思考:怎样通过SequenceInputStream(Enumeration e)来构造。    很容易会想到Enumeration会是一个集合,但通过查找发现不是,而是一个接口。  ...
  • Lingyuezhixing
  • Lingyuezhixing
  • 2015年11月23日 19:43
  • 365

Java 多态中的类型转换(instanceof)

引用类型转换 1、向上类型转换(自动/隐式类型转换),是小类型转化成大类型,不存在认了风险。即子类型对象也是父类型。 2、向下类型转化(强制类型转化),大类型转化成小类型,存在一定风向。多态实例后...
  • qq_18505715
  • qq_18505715
  • 2017年05月22日 22:45
  • 1533

Java多态细节与instanceof关键字

多态无继承,无多态 多态作为OOP三大特性之一,在现实生活中,表现为一个对象可以有多种形态 OOP语言中也就是一个对象对应着不同类型,代码的直接体现在于父类或者接口的引用指向其子类的对象 好处 ...
  • u012768347
  • u012768347
  • 2016年04月05日 13:40
  • 983

Java之instanceof关键字简单例子

开心一笑妻子总是怀疑丈夫有外遇,趁丈夫不在家的时候翻看了他的日记,并找到了充足的证据。 待丈夫下班回家后,妻子又哭又闹地质问:“谁是你的夫人?” 丈夫听了感到莫名其妙,回答说:“除了你,还能有谁呢...
  • huangwenyi1010
  • huangwenyi1010
  • 2016年05月04日 21:41
  • 582

java instanceof 关键字

instanceof其作用是用来判断某对象是否为某个类或接口类型。由于java语言的多态性使得可以用一个子类的实例赋值给一个父类的变量,但是在一些情况下需要判断变量的原有类型,此时可以使用instan...
  • zhujian_sun
  • zhujian_sun
  • 2016年09月02日 11:15
  • 238
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:java自学笔记之抽象类,接口,对象的多态性,instanceof关键字
举报原因:
原因补充:

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