刘意JavaSE 学习笔记 Day7-Day10——面向对象(封装、继承、多态、初始化、static、this、抽象类、接口)

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是随着对象的创建而存在,随着对象消失而消失。

静态方法只能访问静态的成员变量和静态的成员方法。

猜你喜欢

转载自blog.csdn.net/desperatecat/article/details/81113508