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); } }
测试截图: