一、面向对象
1.属性
就是事物的描述信息,相当于事物身上的名词.
2.方法
就是该事物可以做什么,相当于动词
3.成员变量
1)就是事物的属性,如一个人的姓名,性别,年龄.
2)定义在类里,方法的外面.位置在堆内存中.
3)会随着对象的创建二存在,随着对象的消失而消失.
4)有默认的初始化值.
1)在方法定义中或方法声明上.位置是在栈内存中
2)会随着方法的调用二存在,调用完毕则消失.
注:局部变量名称可以和成员变量的名称一样,在方法中使用时,采用"就近原则".
5.成员方法
就是事物的行为,如一个人可以吃饭,喝水,唱歌.
6.类
类就是一个属性和方法的集合.
7.对象
1)对象是事物的具体体现,如一般班里有许多学生,其中的同学"张三"就是一个对象.
2)创建对象的格式
类型 对象名 = new 类名();
3)调用成员变量
对象名.变量名
4)调用成员方法
对象名.方法名(...);
二、匿名对象
1)可以当作参数传递
2)匿名的应用
如只需调用一次,会省去部分代码量.,因为调用完,程序结束时,会变为垃圾,所以不适合多次调用,内存会产生大量垃圾.
三、封装
1.封装的意义
将不需要对外提供的内容隐藏起来,隐藏属性,值提供方法的访问权.
2.封装的益处
隐藏实现细节,提供公共的访问方式,提高代码的复用性和安全性.
四、private关键字
作用:将一个属性或方法的权限限制为私有,被private修饰的成员变量只能在该类使用.
五、this关键字
区分同名的局部变量和成员变量(在有些情况下需要定义相同名字的局部变量和成员变量)
1.属性
就是事物的描述信息,相当于事物身上的名词.
2.方法
就是该事物可以做什么,相当于动词
3.成员变量
1)就是事物的属性,如一个人的姓名,性别,年龄.
2)定义在类里,方法的外面.位置在堆内存中.
3)会随着对象的创建二存在,随着对象的消失而消失.
4)有默认的初始化值.
4.局部变量
2)会随着方法的调用二存在,调用完毕则消失.
3)没有默认的初始化值,需先赋值后才能使用.
5.局部变量和成员变量的区别
1)作用域不同
成员变量是在类的里面,方法体的外面,所有方法都可以调用它.
局部变量定义在方法里面,只有该方法可以调用.
2)成员变量有默认值.局部变量没有默认值,需要提前设置默认值.
3)内存中的区别.
成员变量所在的类实例化后存储在堆内存中.
局部变量在所在方法被调用时存储在栈内存中.
注:局部变量名称可以和成员变量的名称一样,在方法中使用时,采用"就近原则".
5.成员方法
就是事物的行为,如一个人可以吃饭,喝水,唱歌.
6.类
类就是一个属性和方法的集合.
7.对象
1)对象是事物的具体体现,如一般班里有许多学生,其中的同学"张三"就是一个对象.
/* 定义一个学生类 学生的属性:姓名,年龄,性别 学生的行为(方法):吃饭,学习,睡觉 */ class Student { String name = "张三"; int age = 27; char sex = '男'; public void eat(){ System.out.println("吃饭"); } public void study(){ System.out.println("学习"); } public void sleep(){ System.out.println("睡觉"); } }
/* 手机类 属性:品牌,颜色,价格 行为:打电话,发信息,玩游戏 */ class Phone { String brand; String color; double price; public static void main(String[] args){ Phone p = new Phone(); p.brand = "iphone6plus"; p.color = "土豪金"; p.price = 7148.5; System.out.println(p.brand); System.out.println(p.color); System.out.println(p.price); } public void call(){ System.out.println("打电话"); } public void sendMessage(){ System.out.println("发信息"); } public void playGeme(){ System.out.println("玩游戏"); } }
2)创建对象的格式
类型 对象名 = new 类名();
3)调用成员变量
对象名.变量名
4)调用成员方法
对象名.方法名(...);
二、匿名对象
1)可以当作参数传递
class Demo1_Car { public static void main(String[] args) { method(new Car()); } public static void method(Car c) { c.color = "black"; c.num = 4; c.run(); } } class Car { String color; int num; public void run() { System.out.println(color + "," + num); } }
2)匿名的应用
如只需调用一次,会省去部分代码量.,因为调用完,程序结束时,会变为垃圾,所以不适合多次调用,内存会产生大量垃圾.
三、封装
1.封装的意义
将不需要对外提供的内容隐藏起来,隐藏属性,值提供方法的访问权.
2.封装的益处
隐藏实现细节,提供公共的访问方式,提高代码的复用性和安全性.
四、private关键字
作用:将一个属性或方法的权限限制为私有,被private修饰的成员变量只能在该类使用.
class Test6 { public static void main(String[] args) { Phone p = new Phone(); p.setBrand("爱疯6Plus"); p.setPrice(8000); System.out.println("我的手机是:" + p.getBrand() + "价格是:" + p.getPrice()); p.call(); p.sendMessage(); } } class Phone{ private String brand; private int price; public void setBrand(String brand){ this.brand = brand; } public String getBrand(){ return brand; } public void setPrice(int price){ this.price = price; } public int getPrice(){ return price; } public void call(){ System.out.println("打电话"); } public void sendMessage(){ System.out.println("发信息"); } }
五、this关键字
区分同名的局部变量和成员变量(在有些情况下需要定义相同名字的局部变量和成员变量)
class Test7 { public static void main(String[] args) { Student s = new Student(); s.setName("张三"); s.setAge(23); s.setGender('男'); System.out.println("姓名:" + s.getName() + "\t" + "年龄:" + s.getAge() + "\t\t" + "性别:" + s.getGender()); s.show(); } } class Student{ private String name; private int age; private char gender; public void setName(String name){ this.name = name; } public String getName(){ return name; } public void setAge(int age){ this.age = age; } public int getAge(){ return age; } public void setGender(char gender){ this.gender = gender; } public char getGender(){ return gender; } public void show(){ System.out.println(name + "在传智播客学习"); } }