package java0808;
public class Note {
public static void main(String[] args) {
Cat cat =new Cat();
cat.name = "小白";
}
}
/*
方法的重载:在同一个类 方法的名字相同 参数的个数或者类型不同。
静态的好处:1.节省内存空间 2.放在方法区的静态区间
==比较的是内存地址;equlas比较数组里具体的值;
代码块
1.局部代码块
位置:方法里面;//节省内存空间 作用域只在代码块里面{ }
2.构造代码块
位置:放在类里,//new 对象的时候都会调用代码块
好处:1.给成员变量赋值;2.如果类里面某个方法需要在实例化执行
每一个对象都调用代码块;
先执行代码块,再执行构造方法;
3.静态代码块
位置:类里面;static{ }
加载配置文件 加载驱动;
代码块都是有jvm执行;
静态代码块只加载一次;后面的对象无法执行代码块内容
优先于构造执行;
4.同步代码块
语法:synchroized(Student.calss){
sout()
}
在多线程中的安全。
继承:
父类和子类; 子类都拥有父类的属性和方法;
只支持单继承机制一个父类有多个子类 一个子类只能有一个父类
父类叫超类或者基类 子类叫派生类;
子类继承父类关键字:extends
Zi extends Fu{ };
// 子类可以访问父类的属性和方法
//父类访问不到子类的属性和方法
如果子类含有与父类的相同的成员变量
且实例化子类对象时 首先访问子类的成员变量值
如果子类变量没有赋值,便依次向上寻找该同名变量;
获取父类变量:
1.直接获取 2.this. 3.super.父类属性
局部变量;成员变量;父类变量;
静态方法中 this 不能用于调用本类静态的东西;
因为都是静态的 this是本类对象的引用 因为本类对象尚未创建
this不用在静态方法内;
在父子关系中 如果实例化子类对象 ,子类自动调用其父方法;
依次往上找;
方法的重写:
方法名字相同 参数类型以及个数相同 { 方法体不同而已};
1.返回值:子类方法的作用域不能大于父类方法的作用域;
访问修饰符:子类方法访问权限不能严于父类方法的访问权限:
父类是public 子类只能是public 不能是private;
看到 @Overrride 表示肯定重写父类方法
、方法的重载
与返回值无关;
所有类的直接父类与间接父类都是Object;
在子类中有两种情况:
1.调用自己本身的方法通过this.调用
2.调用父类的方法是使用super.方法调用
在使用使用子类的构造方法:
1.继承中,如果没有调用父类其他构造,jvm系统默认调用父类无参构造
2.子类可以调用父类重载的构造方法
super只能放在构造的第一行;否则报错;
super只能放在方法里面;
this()只能放在构造第一行;调用构造函数 用于访问本类
···不能继承的:
1.父类所有私有的子类都拿不到;
2.子类不能直接继承 需要调用 super() 测试类new子类对象
就直接隐式调用父类无参构造;
final 修饰的成员变量必须附有初值!!
final可以修饰:
1.类
语法:在类面前加上关键字final
该类不能被继承;
2.方法
final修饰的方法不能被继承;
3.成员变量
final修饰的变量必须有默认值,设置后不能改变
开发中final 一般用于与static一起用
表示该类不能被继承,但是可以通过类名访问
*/
在创建多个对象时可以,用数组的形式存储对象引用,再用for循环创建几个
千万别只有一个对象引用如何new多个对象 循环下来就只有一个对象是可以使用。