Objiect类中的常用方法、
objiect类是所有类的根类,他定义了所有对象都具备的功能。
内部类
一个源文件可以有多各类,但是public修饰的类之多有一个,而且Java源文件的名称必须和public修饰的类的名称一致
内部类是指在类的里面定义的类
内部类可以用任意字符来修饰
内部类创建实例:
package com.inner;
/*一个java源文件可以有任意多个类,但是public修饰的类
至多有一个,而且java源文件名称必须和public修饰的类
的名称一致*/
class Base1{}
class Sub extends Base1{}
public class Outer {
//内部类是指在类的里面定义的类
//内部类可以用任意的访问权限修饰符来修饰
private int a = 1;
static int b = 2;
class Inner{
//只希望类本身可以调用的类,不希望其他类访问,
//可以把这个类定义为内部类
int a = 2;
public void show(){
int a = 3;
System.out.println(a + "-->"
+ this.a + "-->" + Outer.this.a);
}
}
private void product(){
//局部内部类
class A{}
}
static class SecondInner{
//静态内部类不能访问非静态的属性
public void show(){
System.out.println(b);
}
}
public static void test(){
Inner inner = new Outer().new Inner();
inner.show();
}
public static void main(String[] args) {
test();
}
}package com.inner;
import com.inner.Outer.Inner;
import com.inner.Outer.SecondInner;
public class Test {
public static void main(String[] args) {
Base1 base = new Base1();
//内部类的实例严格依赖于外部类的实例
Inner inner = new Outer().new Inner();
/*Outer outer =new Outer();
Inner inner = outer.new Inner();*/
//创建静态内部类
SecondInner secondInner = new SecondInner();
}
}
package com.inner;
//匿名内部类是只使用一次的类,父类一般是抽象类和接口
abstract class Base{
abstract void show();
}
interface Father{
//接口没有构造器
void say();
}
public class AnonymousDemo {
public static void main(String[] args) {
// 创建一个匿名内部类
new Base() {
@Override
void show() {
//只使用一次的匿名内部类
}
};
new Father() {
@Override
public void say() {
//匿名内部类的创建需要借助一个抽象类或者
//接口作为父类
}
};
}
}
静态内部类可以包含静态成员,也可以包含非静态成员,所以所以静态内部类不能访问外部类的实例成员只能访问外部类的类成员;
静态内部类对象寄存在外部类里,非静态内部类的对象寄存在外部类实例里
局部内部类
如果把一个内部类定义在方法中,这就是局部内部类,仅仅在方法中有效
局部内部类不能在外部类以外的地方使用,局部内部类也不能用访问控制符和static修饰
匿名内部类
匿名内部类的创建需要借助一个抽象类或者接口作为父类、
手动执行枚举类
实现枚举类要实现构造器私有化
所有的属性尽量用public static final 来修饰
package com.enumdemo;
//枚举指类的对象是确定的
public class Season {
//自定义枚举类需要把构造器私有化
String name;
private Season(String name){
this.name = name;
}
//所有的属性尽量用public、static、final来修饰
public static final Season SPRING = new Season("春天");
public static final Season SUMMER = new Season("夏天");
public static final Season FALL = new Season("秋天");
public static final Season WINTER = new Season("冬天");
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
package com.enumdemo;
public enum MySeason {
//第一行必须写此枚举类的所有对象
SPRING("春天"),SUMMER("夏天"),FALL("秋天"),WINTER("冬天");
String name;
private MySeason(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
package com.enumdemo;
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
// Season spring = Season.SPRING;
/*MySeason chun = MySeason.SPRING;
System.out.println(chun.getName());*/
/*MySeason[] seasons = MySeason.values();
for (int i = 0; i < seasons.length; i++) {
System.out.println(seasons[i].getName());
}*/
/*MySeason chun = MySeason.SPRING;
MySeason xia = Enum.valueOf(MySeason.class, "SUMMER");
System.out.println(xia.getName());*/
}
}