A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 胡焱老师 中级黑马   /  2014-1-21 14:52  /  1212 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

近几天复习自学的知识,总觉的有点懵懂的 ,(零基础后遗症)
1.看别人的笔记说  一个独立代码运行,最好只有一个public 修饰 也就是main函数,这是一个对外的公共接口,接口不是(interface)吗,不是抽象的吗??不懂?
2.多态向上转 向下转,到底有啥用啊 在实际工作中,能打个好点的比方不》???真心不理解? 哎!!

评分

参与人数 1技术分 +1 收起 理由
黄晓鑫 + 1

查看全部评分

4 个回复

倒序浏览
Java中在接口的应用中,要注意一下几点:

<1>接口一般定义的是常量和一些抽象方法。抽象类中可以包含抽象方法,也可以有非抽象方法,但是有抽象方法的类一定是抽象类。抽象方法不能有方法体。

<2>在引用接口时,接口的引用指向实现的对象,尽量定义为接口或父类的引用。这其中有可能用到多态的知识。引用接口用implements。

<3>接口(interface)只能定义抽象方法而且默认为是Public。常量是public static final 修饰的

<4>通过implements来引用接口。例:Class runnrtmp inplements runner.

<5>多个无关类可以实现一个接口,!!!!接口的引用指向实现的对象。

<6>一个类可以实现多个无关的接口(这点和继承要有所区别)

<7>和继承一样,接口与实现类之间存在多态性。

<8>接口可以继承其他的接口,并添加新的属性和抽象方法。

<9>在类中实现接口的方法时必须加上public修饰符

评分

参与人数 1技术分 +1 收起 理由
黄晓鑫 + 1

查看全部评分

回复 使用道具 举报
1.(一个独立代码运行,最好只有一个public 修饰 也就是main函数,这是一个对外的公共接口)
答:这句话的意思是,一个 .java文件代码中最好只有一个main函数,因为在运行时(一个java文件代码先编译后运行)main函数是这个程序运行的入口,而不是所谓的接口。main是一个能被 jvm识别的特殊名称,jvm一看到publi static void main(String[] args){}就知道这个java代码是从这里开始运行的。而且只有有了publi static void main(String[] args){},这个java代码才能独立运行,否则 jvm 找不到入口。
而一个接口,一般定义的是常量和抽象方法,也可以说是一个特殊的类,是给类去实现的,然后覆盖接口中的方法。
2.多态向上转 向下转,到底有啥用啊 在实际工作中,能打个好点的比方不》
答:多态向上转,例,猫和狗都属于动物,所以动物是猫和狗抽象出来的共性东西,是他们的父类,所以我们看见猫过来时,可以说一个动物过来了,这就是多态向上转。
多态向下转:
本来有很多动物,我们却指定其中一个叫猫,为什么呢?因为他有不同于其他动物的地方,它会抓老鼠,但其他的动物没有,我们只能叫猫去抓老鼠(动物强转为猫),而不能随便叫一个动物去抓老鼠,所以要调用抓老鼠的方法,必须把动物强转为猫才行,这是动物中没有的方法。即子类调用子类中特有的方法时,必须把父类强转为子类才行

评分

参与人数 1技术分 +1 收起 理由
黄晓鑫 + 1

查看全部评分

回复 使用道具 举报
1、接口实际就是一个纽带的意思。就像电脑USB接口,DVI接口等,都称之为接口。“main函数,这是一个对外的公共接口”,这句话是一个更广泛意义上的接口,这里的接口是表示,main和外部的其他类之间有紧密的联系,用于执行外部类创建的对象及相关语句等。在这里你也可以理解为“程序入口”的意思。而楼主理解的接口是一个关键字,即interface用于实现一个抽象的类,或者接口。
2、多态向上转是把子类转换为父类,向下转是把父类转换为子类。这是多态最经常用到的转换。
举一个不是太恰当的例子:一天老爸说,去给我买一袋苹果。我就去买东西了,可以记不清到底到要什么了。但是我知道,要买的是水果。(这时候我就做了向上的转型)。我买一点梨回去了。老爸一看,我的要的是苹果,现在怎么是梨(看的过程会思考,首先,梨是一种水果,可是不是苹果。由水果到苹果的转换就是向下转型)。在整个过程中有类型的转换错误发生。

评分

参与人数 1技术分 +1 收起 理由
黄晓鑫 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 廉伟杰 于 2014-1-21 20:00 编辑

向上转型(子类→父类):(自动完成的)
即   父类名字 父类对象 = 子类实例
向上转型(父类→子类):(强制完成)
即  子类名称 子类对象 = (父类名称)父类实例

多态时方法的调用
当一个引用类型的变量若声明为父类的类型,但实际上引用的是子类的对象(多态情况):
此时该变量不能再访问子类中自己特有的字段和方法;
若子类覆写了父类的方法,那么此时通过变量访问到的方法,实际上是子类的方法;
[code]<span style="font-size:10px;">class Car
{
        public void show()
        {
                System.out.println("我是一般的车");
        }
}

class BMW extends Car
{        
        //覆写
        public void show()
        {
                System.out.println("我是宝马车");
        }

        public void paoMM()
        {
                System.out.println("我在泡妹妹");
        }

}

class BMWDemo
{
        public static void main(String[] args)
        {
               
                        Car c = new  BMW();//多态
                        
                        c.show();//show到底是谁的? c是BMW的

                        //c.paoMM();//调用不到,c调用不到c实际类型里的方法

                        if(c instanceof BMW)//检验是不是宝马
                        {
                                                BMW b =(BMW)c;
                                                b.paoMM();
                        }
        }
}这个例子能很好的说明多态的应用

评分

参与人数 1技术分 +1 收起 理由
ily521125 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马