构造器
需注意构造器和类名相同且没有返回值
package com.shifan.oop.demo02;
//学生类
public class Student {
//属性:
String name;
//方法:
/** 无参构造器
* 不存在有参构造器时,无参构造器默认隐式存在
* 存在有参构造器时,无参构造器必须显示定义
*/
public Student() {
//构造器会初始化对象的值
this.name = "shifan";
}
//有参构造器
public Student(String name) {
this.name = name;
}
//ALT + INSERT 快捷生成构造器
}
package com.shifan.oop.demo02;
public class Application {
public static void main(String[] args) {
/*实例化一个student对象
这里的Student()方法即为构造器
一个类即使为空,也会隐式存在一个构造器
使用new的本质即为调用构造方法
*/
Student student = new Student();
//也可如下调用有参构造器
Student shifan = new Student("shifan");
}
}
创建对象内存分析
属性默认初始化:
数字:0 0.0
char:u0000
boolean:false
引用:null
封装
封装可以提高程序的安全性,保护数据,隐藏代码的实现细节,统一接口,增加系统的可维护性
package com.shifan.oop.demo03;
public class Student {
//属性私有化,get/set
private String name;
private int id;
private char sex;
private int age;
public int getAge() {
return age;
}
public void setAge(int age) {
//封装属性可增大安全性,给定修改范围
if (age > 120 || age < 0){
this.age = 0;
}else {
this.age = age;
}
}
public static void study(){
System.out.println("学习中");
}
//alt+insert 可快捷生成get/set方法
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
package com.shifan.oop.demo03;
public class Application {
public static void main(String[] args) {
Student xm = new Student();
//私有化的属性无法使用对象直接调用,需使用get/set方法
//xm.name = "shifan";错误
System.out.println(xm.getName());
xm.setName("shifan");
System.out.println(xm.getName());
xm.setAge(180);
System.out.println(xm.getAge());
}
}
继承
所有的类都直接或者间接继承Object类
子类可使用父类的所有方法