面向对象编程1 p60-66
- 面向过程:步骤清晰,线性思维 适合处理简单问题
- 面向对象:物以类聚,分类思维(问题需要哪些分类 对分类单独思考)
面向对象
-
Object-Oriented Programming,OOP
-
本质:以类的方式组织代码 以对象的组织(封装)数据
-
抽象
-
三大特性
- 封装
- 继承
- 多态
先有对象后有类 对象,具体事务。类,对对象的抽象。类是对象的模板
静态/非静态
public class test2 {
public void say(){
System.out.println("hello");
}
//static静态方法和类一起加载
public static void a(){
//b()是不可以的
}
//----------------------------------
//类实例化后才存在
public void b(){
//a()可以
}
}
public static void main(String[] args) {
//对象类型 对象名 = 对象值;
test2 test2 = new test2();//实例化出一个对象
test2.say();
a();//可直接使用
test2.b();//用对象引用该类的方法
}
静态和非静态成员:字段、函数成员的声明中含static修饰符时是静态成员,否则是非静态成员(实例成员);
数据成员可以分静态变量、非静态变量两种.。静态成员属于类,而非静态成员(实例成员)属于对象。
对于类的数据成员来说,如果是静态的,那么他将是类的一部分,为所有实例共享;如果是非静态的,每个实例有一份拷贝。
形参实参
int add = new Demo3().add(10, 20);//实参
public int add(int a, int b)//形参
传递(前面笔记有)
类和对象的关系
- 类是一种抽象的数据类型,是对某一类事物整体描述/定义,不能代表某一个具体的事物
- 对象是抽象概念的具体
注意一个项目只存在一个main方法
大部分类里面只有属性、方法
//学生类
public class Student {
//属性
String name;
int age;
//方法
public void study(){
System.out.println(this.name+"Student study");
}
}
类实例化后返回一个自己的对象
下 student对象就是Student类的具体
public static void main(String[] args) {
Student student = new Student();
}
构造器
- 一个类什么都没有,也会存在一个方法:构造器
- 实例化初始值
- 使用new关键字,本质调用构造器,构造器必须有
- 用来初始化值
- 已经定义了一个有参,如果想要使用无参的方式,应显式地定义一个无参构造器
public class Person {
String name;
//无参构造器,可以没有无参
//public Person(){
//有参构造器,若存在无参 则算作重载
public Person(String name){
this.name=name;
}
}
public class Application {
public static void main(String[] args) {
//没有无参构造器则编译错误
//Person person = new Person();
Person person1 = new Person("wukong");
}
}