Java暑期学习第十一天日报

一、今日所学内容:

    今天学习了4.6枚举的内容,另外对4.7的综合实例进行了练习。

二、遇到的问题:

 刚开始对于枚举中的构造函数不是很了解,对于构造函数必须是private类型,另外需要注意枚举中的成员如RED需要对构造函数进行定义,例如RED("***");另外对于枚举中实现接口中的内容不了解,对于具体的接口如何定义和实现不了解,例如对于implements、interface、@Override等关键词不了解。

三、明日计划:

    明天计划对4.9的课后习题进行练习。

 

今天学习的内容具体如下:

1.枚举

(1)枚举定义

关键字:enum

公式:public enum 枚举名字()

实例如下:

public enum Color(){
      RED,BLUE,GREEN,BLACK;
public static void main(String[] args){
     Color c=Color.BLUE;
     System.out.println(c);
}
}

 

(2)嵌套在switch中:

使用switch打印枚举实例:

public class Person {
    public enum Color{
          RED,BLUE,GREEN,BLACK; 
    }
    public static void main(String[] args) {
         Color c=Color.RED;
         switch(c) {
         case RED:System.out.println("红色");break;
         case BLUE:System.out.println("蓝色");break;
         case GREEN:System.out.println("绿色");break;
         case BLACK:System.out.println("黑色");break;
         }  
    }
    
}

 在枚举中定义构造方法:(枚举中的构造方法必须是private)

public class Person {
    public enum Color{
          RED("红色"),BLUE("蓝色"),GREEN("绿色"),BLACK("黑色"); 
        private String name;
        private Color(String name) {
            this.name=name;
        }
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name=name;
        }
        
    }
    public static void main(String[] args) {
         Color c=Color.RED;
         System.out.println(c.name);
         c.setName("黄色");
         String str=c.getName();
         System.out.println(str);   
    }  
}

(3)枚举中实现接口:

 

  public class Person {
public enum Color implements H{ RED("红色"),BLUE("蓝色"),GREEN("绿色"),BLACK("黑色"); private String name; private Color(String name) { this.name=name; } public String getName() { return name; } public void setName(String name) { this.name=name; } @Override public void get() { System.out.println("get..."); } } public static void main(String[] args) { Color c=Color.RED; c.get(); } interface H{ void get(); } }

1.有时必须从几个类中派生出一个子类,继承它们所有的属性和方法。但是,Java不支持多重继承。有了接口,就可以得到多重继承的效果。接口(interface)是抽象方法和常量值的定义的集合。从本质上讲,接口是一种特殊的抽象类,这种抽象类中只包含常量和方法的定义,而没有变量和方法的实现。接口是用 interface 来定义。用 interface 来定义。用 interface 来定义。  
2.在java程序中 一个类实现接口类时用的关键词。Object implements Object 如java 中定义的接口Animal ,实现接口的类 定义如下: public class Tiger implements Animal。

   3.@Override 的作用是:如果想重写父类的方法,比如toString()方法的话,在方法前面加上@Override 系统可以帮你检查方法的正确性。另外编译器可验证@Override下面的方法是否是父类中有的,如果没有则报错。
      Override的用法:Override:java.lang.Override是一个marker annotation类型,它被用作标注方法。它说明了被标注的方法重载了父类的方法,起到了断言的作用。

 

(4)在枚举中定义抽象方法:

public class Person {
    public enum Color {
          RED
          {
              public void get() {
                  System.out.println("红色");
              }
          },BLUE
          {
              public void get() {
                  System.out.println("蓝色");
              }
          }
          ,GREEN
          {
              public void get() {
                  System.out.println("红色");
              }
          }
          ,BLACK
          {
              public void get() {
                  System.out.println("红色");
              }
          }; 
    public abstract void get();
        
    }
    public static void main(String[] args) {
         Color c=Color.RED;
         c.get();  
    } 
    
}

 

 

2.综合实例——Person类

package demo.dong;
public class Person {
    private int age;
    private String name;
    public void setAge(int age) {
        this.age=age;
    }
    public int getAge() {
        return age;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name=name;
    }
    
}

package demo.dong;
public class Service {
    public static void main(String[] args) {
        Person p=new Person();
        p.setName("张无忌");
        p.setAge(12);
        int a=p.getAge();
        String str=p.getName();
        System.out.println("姓名:"+str);
        System.out.println("年龄:"+a);
    }

}

测试截图:

 

posted on 2020-07-16 22:00  桑榆非晚柠月如风  阅读(157)  评论(0编辑  收藏  举报