3【重点难点】面向对象(封装、继承、多态、初始化、static、this、抽象类、接口)
day07 匿名对象,封装,private,this,构造方法,static
day08 继承,初始化
day09 多态,抽象类,接口(极其重要)
day10 package 访问权限 内部类
以上花4天时间
第四天
成员变量和局部变量的区别(理解)
(1)在类中的位置不同
成员变量:类中方法外
局部变量:方法定义中或者方法声明上
(2)在内存中的位置不同
成员变量:在堆中
局部变量:在栈中
(3)生命周期不同
成员变量:随着对象的创建而存在,随着对象的消失而消失
局部变量:随着方法的调用而存在,随着方法的调用完毕而消失
(4)初始化值不同
成员变量:有默认值
局部变量:没有默认值,必须定义,赋值,然后才能使用
引用类型包括:类,接口,数组
形式参数是类名的问题:如果你看到了一个方法的形式参数是一个类类型(引用类型),这里其实需要的是该类的对象。
/*
形式参数的问题:
基本类型:形式参数的改变不影响实际参数
引用类型:形式参数的改变直接影响实际参数
*/
//形式参数是基本类型
class Demo {
public int sum(int a,int b) {
return a + b;
}
}
//形式参数是引用类型
class Student {
public void show() {
System.out.println("我爱学习");
}
}
class StudentDemo {
//如果你看到了一个方法的形式参数是一个类类型(引用类型),这里其实需要的是该类的对象。
public void method(Student s) { //调用的时候,把main方法中的s的地址传递到了这里 Student s = new Student();
s.show();
}
}
class ArgsTest {
public static void main(String[] args) {
//形式参数是基本类型的调用
Demo d = new Demo();
int result = d.sum(10,20);
System.out.println("result:"+result);
System.out.println("--------------");
//形式参数是引用类型的调用
//需求:我要调用StudentDemo类中的method()方法
StudentDemo sd = new StudentDemo();
//创建学生对象
Student s = new Student();
sd.method(s); //把s的地址给到了这里
}
}
封装:隐藏对象的实现细节(隐藏属性),仅对外提供公共访问方式
private:可以修饰成员变量和方法,但一般只修饰成员变量。被private修饰的成员只能在本类中访问。
this:代表当前类的一个对象。场景:解决局部变量隐藏成员变量的问题(this.name = name;)
getXxx()和setXxx()方法:getXxx()是获取值的操作,只需要返回,因此是void;
setXxx()是赋值操作,需要传参,因此有明确的返回值类型,比如基本类型(int或String)。
public String getName(){
return name;
}
public void setName(String name){
this.name = name;
}
类的常用代码写法
class Phone{
private String brand;
private int price;
private String color;
public Phone(){
}
public String getBrand(){
return brand;
}
public void setBrand(String brand){
this.brand = brand;
}
public int getPrice(){
return price;
}
public void setPrice(int price){
this.price = price;
}
public String getColor(){
return color;
}
public void setColor(String color){
this.color = color;
}
}
class PhoneTest{
public static void main(String[] args){
Phone p = new Phone();
p.setBrand("苹果");
p.setPrice(6999);
p.setColor("深空灰");
System.out.println(p.getBrand()+"---"+p.getPrice()+"---"+p.getColor());
}
}
变量的范围越小越好,因为能及时被回收,释放内存。
static 静态变量属于类,也叫做类变量。静态比对象先存在。静态变量是随着类的加载而加载。
而成员变量比如this是随着对象的创建而存在,随着对象消失而消失。
静态方法只能访问静态的成员变量和静态的成员方法。