1.类
-
类:属性+行为,类是对象的描述
属性:成员变量【有默认初始化值】
行为:成员方法(去掉static关键字)
- 局部变量:方法内或方法声明上(形参),存放在栈内存中,随着方法调用存在,随着方法调用完消失
- 成员变量:类中方法外的变量,存放在堆内存中,随着对象创建存在,随着对象消失而消失
2.对象
- 对象:类的实体,类可以有多个实体
package oopReview;
public class telephone {
String name;
int price;
public void phone(){
System.out.println("make a phone call");
}
public void text(){
System.out.println("sent a text");
}
}
package oopReview;
public class testTelephone {
public static void main(String[] args) {
telephone t1=new telephone();
t1.name="iphone";
t1.price=7000;
System.out.println(t1.name+"is"+t1.price);
t1.phone();
t1.text();//注意方法+()
}
}
- 对象内存图
有new就会分配堆内存
方法在载入栈内存
stu1=null只切断stu1到地址连接,不影响stu2(两个实体)
两个实体都被切断以后,堆内存空间会被垃圾回收
区分两个引用指向不对对象内存图和指向同一对象内存图
3.封装
- private关键词:权限修饰符,修饰成员,只能在本类中访问
设置值:set方法
获取值:get方法
-
this关键字:限定变量用于指代成员变量,方法被哪个对象调用,this就指代哪个对象
name=name(如上图)会采用就近原则,将name定义
为形参name
4.构造方法
-
格式:方法名和类名相同/没有返回值类型,没有返回值
-
每创建一次对象就会执行一次构造方法,不能用 . 手动调用
-
用于给对象的属性初始化
public class student{
private int age;
public student(int age){
this.age=age;
}//student s1=new student(21)
}
-
如果没有定义构造方法,系统自动给出无参构造方法,如果定义了构造方法,系统将不再提够,需要自己写一个
-
最好永远自己给出无参构造方法
5.javabean
是一个java中的类,可以封装数据
要求:成员变量使用private修饰/提供每个成员变量对应的set和get函数/提供一个无参构造方法
6.继承
-
子类可以直接使用父类中非私有成员,也可以通过非私有的set、get方法访问父类中的私有成员
public class 子类名 extends 父类名{ }
-
利弊
-
好处:提高代码复用性、维护性【需求变更时只需修改一次】
-
弊端:降低灵活性,子类必须拥有父类非私有成员,增强代码耦合性
-
-
java中支持单继承不支持多继承,但是支持多层基础【不能同时继承两个父类,但是可以间接继承父类的父类 】
-
继承中成员变量访问特点:就近原则【子类局部范围找-子类成员范围找-父类成员范围找】
-
继承中成员方法访问特点:就近原则
-
通过子类对象访问一个方法,先在子类查找、再查找父类
-
若子类有还想调用父类方法:super关键字
-
-
this:代表本类对象的引用
super:代表父类对象的引用
-
方法重写:子类出现和父类中一模一样的方法声明
public class ver2 extends ver1{ @Override public void text() { super.text(); System.out.println("text super"); } }
子类需要父类功能,又需要在功能主题添加子类特有内容
方法重写与方法重载区
-
方法重写:在继承体系中,子类出现和父类一样的方法声明【方法名、参数列表、返回值类型】
-
方法重载:在同一个类中,方法名相同,参数列表不同,跟返回值无关
-
-
父类的私有方法不能被重写,静态方法必须被子类用静态方法重写【其实不是重写】,非静态方法必须用非静态方法重写
-
继承中构造方法的访问方法
子类在完成初始化前,一定要先访问父类中的无参构造方法,完成父类初始化:因为子类在初始化时有可能会使用父类中数据
子类全参数构造方法需要初始化父类成员变量
系统在每个构造方法第一行默认隐藏一句super();默认访问父类空参构造方法【父类:访问Object类】
注:this(...)super(...)都必须放在构造方法第一行有效语句,而且两者不能共存
8.final关键字
-
final修饰方法:该方法不能被重修
-
final修饰类:该类不能被继承
-
final修饰变量:该变量不能被再次赋值
-
final修饰成员变量需要注意初始化时机:要么在创建时直接给值,要么在构造方法结束前完成赋值
-
常量命名规范:一个单词则所有字母大写,多个单词则用_分隔
-