标题向上造型–方法重写–重写与重载的区别–package–import–final–static
向上造型:---------还是进一步代码的复用
父类型引用指向子类对象
能点出来什么,看引用类型-------规则!
Persion p= new Student();
Persion p2= new Teacher();
Persion p3 = new Doctor();
//p/p2/p3,只能点出左边引用类型的,Persion类的属性和方法
方法重写:
发生在父子类中,方法名相同,方法参数相同(即方法签名相同),但方法体不同!
重写方法被调用时,看对象的类型,----------规则!
重写遵循“俩同俩小一大”原则:
俩同:方法名+参数
俩小:子类返回值类型小于或等于父类 +子类抛出异常小于或等于父类
void+基本类型,就是等于
引用类型,就是小于或者等于
一大:子类方法的访问权限大于或等于父类的
public class Aoo {
int a;
void Memory1(){
System.out.println("存个炒菜~~~~");
}
}
public class Boo extends Aoo{
int b;
void Memory1(){
super.Memory1();
System.out.println("不想存炒菜!!!,存个西菜~");
}
}
public static void main(String[] args) {
Aoo a= new Boo();
a.Memory1();
}
重写与重载的区别:
重写:只在父子类中,名字相同,参数相同,方法体不同;
重载:在同一类中,名字相同,参数不同,方法体不同;
package : 包机制:所有包名,建议都小写;
类的全称:包名.类名
import:导入类
四大权限修饰符:------保护数据安全
public: 公共的,所有类中
public class test3 {
public int a;
}
protected:本类,子类,同包中
public class test3 {
protected int a;
}
private: 本类;
public class test3 {
private int a;
}
默认的:本类,同包(不常用,不建议使用
public class test3 {
int a;
}
final:最终的、不可改变的------------单独应用几率极低
-
修饰变量:变量不能被改变
-
修饰方法:方法不能被重写
-
修饰类:类不能被继承
static:静态的
静态变量:
- 由static修饰
- 属于类,存储在方法区中,只有一份
- 常常通过类名点来访问
- 何时用:所有对象所共享的数据(图片、音频、视频等)
静态方法:
- 由static修饰
- 属于类,存储在方法区中,只有一份
- 常常通过类名点来访问
- 静态方法中没有隐式this传递,不能直接访问实例成员
- 何时用:方法的操作与对象无关
静态块:
- 由static修饰
- 属于类,在类被加载期间自动执行,一个类只被加载一次,所以静态块只执行一次
- 何时用:加载/初始化静态资源(图片、音频、视频等)
static final常量:
必须声明同时初始化
类名点来访问,不能被改变
建议:常量名所有字母都大写,多个单词用_分隔
编译器在编译时会将常量直接替换为具体的数,效率高
何时用:数据永远不变,并且经常使用
public static int num = 5; //静态变量
public static final int COUNT = 5; //常量
}
class Aoo{
public static final double PI = 3.14159;
//public static final int NUM; //编译错误,常量必须声明同时初始化
}