面向对象详解
1:成员方法的参数讲解 值参数(参数类型是值) 引用参数(参数类型是数组或者其他类型) 不定长参数
1:值参数
2:引用参数
3:不定长参数
2:构造函数详解
自己如果定义了构造函数 都是有参的 这个时候系统就不会自动为我们创建无参的构造函数了
私有构造函数 是为了实现单例模式 注意 对象必须是静态的
public class Person { private static Person person; private int age; private Person(int age) { this.age = age; } static synchronized Person getInstance(){ if(person==null){ person=new Person(1); } return person; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
引用 对象 类之间的关系
引用只是存放一个对象的内存地址,并非存放一个对象, 严格的说 引用和对象是不同的。
3:对象的销毁
一般会被销毁的对象 1:超出了作用范围 2:将对象置为null
4:this关键字
一般情况下,当成员变量和局部变量的变量名重复的时候,会使用this关键字实现区分两个变量。
this其实就是本类的一个对象,
this还可以调用类的构造函数 ,但是在这个函数之前不可执行其他方法。代码会提示
5:静态变量
当类首次被加载的时候,静态变量就被分配到内存中,直到程序结束。
静态常量
如果多个类使用同一个数据常量,此时就没有必要在每一个类里面都创建变量。这样浪费空间。可以创建静态常量。
注意需要大写。
静态方法
有的时候,不希望创建类的对象而调用此方法。
6:静态代码块
static修饰的代码区域成为静态代码块 定义静态代码块可以完成类的初始化操作。
执行顺序:静态代码块 非静态代码块 构造函数 非静态代码块
静态代码块只会执行一次 非静态 第一次创建一次 第一个对象创建之后执行一次 随后在创建对象就不在执行。
7:面向对象思想
1:封装 将对象的属性和行为封装起来的载体就是类 类通常隐藏细节, 这就是封装的思想。
2:继承: 单继承
重写父类的方法 不可以将父类方法的权限范围降低。
Person person=new Person(); person.eat(); Person person1=new Personone(); person1.eat(); Person person2=new Persontwo(); person2.eat();
注意 以上调用的方法 分别都是子类自己实现的api。 就是如果父类的对象是由子类实例化的,这个对象调用的方法也是
子类重写过得。
super关键字: 子类重写了父类的方法 如果想调用父类的方法, 可以调用super.实现调用父类的成员变量和方法。
注意 在子类的构造方法,使用super的时候,其他初始化代码必须写在super之后,不可写在前面。
注意 子类对象在实例化的时候,父类对象也会被实例化,java编译器会在子类构造方法中自动调用父类的无参构造方法,
但有参构造方法并不能自动调用。只可以依赖于super关键字显示调用父类的构造函数。
所有类的父类:
Object
3:多态
方法重载
向上转型 向下转型
4:抽象类 接口
区别:
5:final
6:内部类
7: