一、包
1.包
包就是对类进行分类管理
com.fruit.manage.add
com.fruit.manage.update
2.包的命名规则
公司域名的倒序
全部小写
多个包之间用.分割
3.一个类中的组成顺序
package -- import -- class
二、权限修饰符
public: 本类 相同包(子父类或无关类) 不同包(子父类) 不同包(无关类)
protected: 本类 相同包(子父类或无关类) 不同包(子父类)
默认: 本类 相同包(子父类或无关类)
private: 本类
修饰符总结
|
||||
修饰符
|
类
|
成员变量
|
成员方法
|
构造方法
|
public
|
Y
|
Y
|
Y
|
Y
|
default
|
Y
|
Y
|
Y
|
Y
|
protected
|
|
Y
|
Y
|
Y
|
private
|
|
Y
|
Y
|
Y
|
abstract
|
Y
|
|
Y
|
|
static
|
|
Y
|
Y
|
|
final
|
Y
|
Y
|
Y
|
|
三、内部类
1.分类
成员内部类 局部内部类 匿名内部类
2.成员内部类
定义位置:
定义在类中的成员位置
创建对象格式:
外部类名.内部类名 对象名 = new 外部类对象().new 内部类对象();
案例:
public class Test01 {
public static void main(String[] args) {
//创建对象
Person.Heart ph = new Person().new Heart();
ph.jump();
}
}
class Person {
String name = "王五";
class Heart {
String name = "李四";
public void jump() {
String name = "张三";
System.out.println(Person.this.name + "心脏在跳动"); // 王五
System.out.println(this.name + "心脏在跳动"); // 李四
System.out.println(name + "心脏在跳动"); // 张三
}
}
}
3.局部内部类
了解(写在成员方法里的内部类)
4.匿名内部类
abstract class Animal {
public abstract void eat();
//public abstract void sleep();
}
public class Test01 {
public static void main(String[] args) {
/*Animal a = new Animal(){
@Override
public void eat() {
System.out.println("吃饭...");
}
@Override
public void sleep() {
System.out.println("睡觉...");
}
};
a.eat();
a.sleep();*/
new Animal(){
@Override
public void eat() {
System.out.println("吃饭...");
}
}.eat();
}
}
例如:
public class Test {
//成员内部类
class B
{
int b = 7;
}
public static void main(String[] args) {
//局部内部类
class A
{
public int i = 5;
}
A a = new A();
System.out.println(a.i);
Test.B b = new Test().new B();
System.out.println(b.b);
//匿名内部类
new C()
{
@Override
public void funny() {
System.out.println("it's funny");
}
}.funny();;
}
}
abstract class C {
public abstract void funny();
}
匿名内部类: 创建出来的也是一个对象,类似于匿名对象,只不过这个对象的类体要重写或实现父类或接口的方法
匿名内部类:
new 类名() {
@Override
public 返回值类型 方法名(参数列表){
。。。
}
};
父类名(或接口名) 变量名 = new 类名() {
@Override
public 返回值类型 方法名(参数列表){
。。。
}
};
匿名对象:
new 类名();
new 类名(参数列表);