黑马程序员技术交流社区

标题: 求教各位前辈,方法一定要定义在类中吗? [打印本页]

作者: 羽狼之翼    时间: 2015-1-9 23:58
标题: 求教各位前辈,方法一定要定义在类中吗?
如题,方法是否一定要定义在类中?定义在接口中的抽象方法,叫不叫方法呢?求解!谢了!
作者: 常强儿    时间: 2015-1-10 00:07
java所有的东西都在类中
作者: djbcool    时间: 2015-1-10 00:07
方法就是解决一类问题的有序代码组合,无论定义在哪里。
作者: jojo    时间: 2015-1-10 00:48
是的,在java中有着万物皆对象的说法,所以任何操作都会被封装在一个类中
作者: lwj123    时间: 2015-1-10 08:11
你都说是抽象方法咯,那肯定是方法啊,只是定义在接口中的方法没有方法体而已。
作者: 邓士林    时间: 2015-1-10 09:10
脱离类的方法到底有没有?
思考下,如果一个方法没有归属(类、接口),不指定谁拥有这个类,那它怎么被调用呢?
不能调用,还有存在的意义吗?用都不能用,JVM估计不会让它存在,浪费内存啊!
测试用例:
public void Get()
{
        System.out.println("我是脱离方法的类。");
}
class You
{
        public static void main(String[] args)
        {
                System.out.println("Hello World!");
        }
}

编译结果:
---------- 编译 ----------
You.java:1: 错误: 需要class, interface或enum
public void Get()
       ^
1 个错误

输出完成 (耗时 6 秒) - 正常终止

编译结果处理:
通过编译结果,我们可以根据提示【需要class,interface或enum】,应该就是没有所属导致的。
尝试解决:
1、添加类:
class MyName
{
        public void Get()
        {
                System.out.println("我是脱离方法的类。");
        }
}

class You
{
        public static void main(String[] args)
        {
                System.out.println("Hello World!");
        }
}
编译结果:
---------- 编译 ----------
输出完成 (耗时 1 秒) - 正常终止

2、添加接口:
interface MyName
{
        public void Get();
}

class You
{
        public static void main(String[] args)
        {
                System.out.println("Hello World!");
        }
}
编译结果:
---------- 编译 ----------
输出完成 (耗时 0 秒) - 正常终止

注意:接口中的方法不能有主体,没有实现的方法,谁实现它谁实现自己的方法主体。

3、添加enum:
介绍下enum的用法:
简单的用法:JavaEnum简单的用法一般用于代表一组常用常量,可用来代表一类相同类型的常量值。如:
性别:
public enum SexEnum {
  male, female;
}

代码:
enum MyName{
        public void Get()
        {
                System.out.println("我是脱离方法的类。");
        }
}

class You
{
        public static void main(String[] args)
        {
                System.out.println("Hello World!");
        }
}

编译结果:
---------- 编译 ----------
You.java:1: 错误: 需要<标识符>
enum MyName{
            ^
You.java:2: 错误: 需要',', '}'或';'
        public void Get()
        ^
You.java:2: 错误: 需要'}'
        public void Get()
                   ^
You.java:5: 错误: 需要class, interface或enum
        }
        ^
4 个错误

输出完成 (耗时 1 秒) - 正常终止

枚举类,需要枚举常量(这点我也不懂)
enum MyName{
        id;                                                //添加一个枚举常量
        public void Get()
        {
                System.out.println("我是脱离方法的类。");
        }
}

class You
{
        public static void main(String[] args)
        {
                System.out.println("Hello World!");
        }
}
编译结果:
---------- 编译 ----------
输出完成 (耗时 0 秒) - 正常终止

总结:方法不能独立存在,必须指明归属,以便使用。接口、抽象类和enum归根都属于类,特殊点罢了
ps:个人瞎琢磨,欢迎指教


作者: 以利亚    时间: 2015-1-10 09:29
接口、枚举、抽象类
作者: 菜鸟一号    时间: 2015-1-10 09:33
抽象方法也是方法嘛
作者: 446111220    时间: 2015-1-10 09:41
抽象方法你自己都说了肯定是啊
作者: 廖彬    时间: 2015-1-10 12:19
java最核心的地方就是面向对象思想,把所有东西放在一个“包”里,而这个包就是类,方法当然就是该定义在类中,当你new出一个对象时,就可以用这个对象将类中的方法属性实现。就比如一辆车,发动机,轮胎应该安装在哪里,当然是在车里,当你用车时,直接new一个车出来开车对不对,而不是自己动手组装再开车
作者: 周景新    时间: 2015-1-10 15:02
楼上说的很详细,学习了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2