类与对象
类就像是抽象的,例如手机模型图纸、水果、房子、课本,就像日常生活中说的某一类东西。
对象就是根据类创建出来的实例化的一个东西,例如根据手机创建具体的华为手机对象,根据水果类创建榴莲对象。
每个对象不同,但是可以有相同的属性(成员变量)和行为(成员方法)
例如:
在Package中创建一个Phone类,在这个抽象类里面定义它应该有的属性、行为。
要使用这个类里面的属性和行为,需要再创建一个类,里面包含main(主函数),在里面创建Phone类的对象,通过对象调用Phone类里面的方法和改变Phone类的变量。也就是实例化。
所以在Main方法中,1. 根据Phone类创建一个具体对象:
格式:类名 对象名 = new 类名(); Phone phone = new Phone();
2.根据具体对象调用类中所拥有的属性和方法:
格式: 对象.成员变量 / 对象.成员方法();phone.name = "华为手机";
phone.getQQ();//调用Phone类中的方法函数
private的使用
变量在方法内才能使用,其他类想要访问变量,只能通过get、set方法访问,好处就是,通过get、set方法可以在里面规定变量的“质量”,即对变量进行一些限制,提高代码的安全性。
构造方法中获取到name和age,在之后的getName和getAge中才能获得构造方法中的参数,否则会获取到null和0 。
继承
所谓继承,如果用集合来表示的话,可能就是以下表示
子类继承父类的所有属性和方法,但是不同的子类可以有自己不同的方法。
在父子类的继承关系当中,如果成员变量重名,有两种访问方式:
- 直接通过子类对象访问成员变量:
eg:Zi zi = new Zi();
//num成员变量在父类子类中都定义了,那么在这里首先在子类中寻找num
System.out.println(zi.num);这里的输出的num则是子类中的num
等号左边是谁,就优先用谁,没有则向上找。
- 间接通过成员方法访问成员变量:
子类和父类分别有一个方法,里面打印相同变量num,则在哪个方法中,num就优先用哪个方法所属的类中的值,子类没有就找父类,只能向上取,父类没有则不能向子类中寻找。
方法重写条件:
1.必须要有继承关系;
2.子类方法的返回值数据类型、方法名、参数都必须要和父类完全一致;
3.子类方法的访问修饰符必须大于等于父类方法的访问修饰符(public>protected>default>private)
接口
实现接口一定要重写接口中所有的抽象方法
格式:public class 子类 implements 接口,接口,,{}