一、面向对象
1.属性
就是事物的描述信息,相当于事物身上的名词.
2.方法
就是该事物可以做什么,相当于动词
3.成员变量
1)就是事物的属性,如一个人的姓名,性别,年龄.
2)定义在类里,方法的外面.位置在堆内存中.
3)会随着对象的创建二存在,随着对象的消失而消失.
4)有默认的初始化值.
4.局部变量
1)在方法定义中或方法声明上.位置是在栈内存中
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 + "在传智播客学习");
}
}