类(引用数据类型)
1.Java为我们提供好的类,如Scanner类,Random类等,
2.自己创建的类,方法(函数,成员方法)
属性(类里面的变量 进堆 成员变量(全局变量))
创建类
Car.java文件,与类名相同
public class Car {
String color="黑色"; // 成员变量 进堆
double price;
void run(String color) { // color局部变量
int wheel=4; // 局部变量 进栈
this.color=color;
System.out.println( "一辆"+color+"的车用"+wheel+"个车轮在跑" );
}
}
类的使用
导包:同文件夹下,可以避免导包
public class CarDemo {
public static void main(String[] args) {
Car c = new Car(); // 生成一个车对象
c.color = "red";
c.price = 150000;
c.run("红色");
}
}
面向对象
面向对象是把构成问题事务分解成各个对象,
通过对象描叙某个事物在整个解决问题的步骤中的行为。
类和对象的区别
类是对某一类事物的抽象描述,对象表示该类中的具体事物。
局部变量和成员变量区别
定义位置 方法 类
存储位置 栈(变量) 堆(对象)
生命周期 方法弹栈消失 对象消失
初始化 手动赋值初始值 null 0
基本类型和引用类型作为参数传递
基本类型作为参数时,传递值给调用的方法,方法(局部)执行完变量值不变
引用变量作为参数时,传递地址给调用的方法,方法执行完变量值会变
封装(方法、类)
优点: 提高了代码的复用性,提高了安全性。
隐藏了实现细节,对外提供可以访问的接口。概念
class Person {
private int age; // 私有成员变量
private String name;
public void setAge(int a){ if (a>0) {age = a; } } // 提供设置方法
public void getAge(){ return age; } // 提供访问方法
public void speak() {
this.name = "小强"; // this.成员变量 this:本类对象
this.age = 18;
System.out.println("name=" + this.name + ",age=" + this.age);
}
public boolean equalsAge(Person p) {
return this.age == p.age; // this代表调用方法的对象
}
}
public class PersonDemo {
public static void main(String[] args) {
Person p = new Person();
p.setAge(30);
System.out.println("大家好,今年我" + p.getAge() + "岁");
}
}
继承
继承是指在一个现有类的基础上去构建一个新的类,
构建出来的新类被称作子类,现有类被称作父类,
子类会自动拥有父类所有可继承的属性和方法。
父类中的私有成员变量了,子类是不能直接访问的。
优点:
提高了代码的复用性,提高软件开发效率。
让类与类之间产生了关系,提供了多态的前提。
在Java中,类只支持单继承,不允许多继承,
一个类只能有一个直接父类 // C类不可以同时继承A类和B类
多个类可以继承一个父类 // 类B继承类A,类C继承类A
多层继承是可以的 // 类B继承类A,类C继承类B
重写(子类重写父类中成员方法)
子类方法 修饰符 权限 大于等于父类 public>不写(默认修饰符)>private
子类方法的返回值类型 方法名 参数列表都要和父类一样。
this.name this子类对象
super.name 父类属性/方法 super父类对象
调用方法 就近 子类找不到 再去父类找
封装:隐藏对象属性与方法的实现细节,对外提供一些公共的访问方式
继承:子类会自动拥有父类所有可继承的属性和方法。
多态:配合继承与方法重写提高了代码的复用性与扩展性