面向对象编程
初始面向对象
面向过程思想:顺序执行,线性思维
面向对象思想:分类的思维模式 适合处理复杂的问题
属性+方法 = 类
对于描述复杂的事物,为了从宏观上把握、从整体上合理分析,使用面向对象的思路去分析整个系统。但是,到具体微观的操作,仍需要面向过程的思路去处理
面向对象编程的本质:以类的方式组织代码,以对象的组织(封装)数据。
三大特性:封装,继承,多态
从认知角度考虑是先有对象后有类。对象,是具体的事物。类是抽象的,对对象的抽象
从代码运行角度考虑是先有类后有对象,类是对象的模板
方法的回顾
方法的定义
修饰符 返回值类型 方法名(){
方法体
return 返回值;
}
例:
public String sayHello(){
return "helo world";
}
public void hello(){
return;
}
break:跳出switch循环,结束当前所在的循环
continue:借宿本次循环,进入下一次循环
return:方法的结束,返回值
方法名:驼峰命名法,见名知义
方法的调用
静态(static)与非静态方法:
public class Demo02 {
public static void main(String[] args) {
//静态方法
//Student.say();
//非静态方法
//实例化这个类new
//对象类型 对象名=对象值
Student student = new Student();
student.say();
}
//static是和类一起加载的
public static void a(){
b();
};
//类实例化之后才存在
public static void b(){};
package com.oop.demo01;
//学生类
public class Student {
//非静态方法
public static void say(){
System.out.println("学生说话了");
}
}
static是与类一起加载的,所以在同一个类里,有Static的方法不能直接调用非静态(实例化之后才存在)的方法。
值传递&&引用传递
值传递:
public class Demo04 {
public static void main(String[] args) {
int a=1;
System.out.println(a); //1
Demo04.change(a);
System.out.println(a);//1
}
//返回值为空
public static void change(int a){
a=10;
}
}
形参不能改变实参的值
引用传递
package com.oop.demo01;
//引用传递 对象 本质是值传递
public class Demo05 {
public static void main(String[] args) {
Person person = new Person();
System.out.println(person.name); //null
Demo05.change(person);
System.out.println(person.name);
}
public static void change(Person person){
//person是一个对象,指向Person person = new Person ;具体的值,改变属性
person.name="kmh";
}
}
//定义一个Person类 有一个属性name
class Person{
String name; //类下的字段叫属性
}
方法的参数指向对象person,改变的是Person里的值
对象的创建分析
类和对象的关系
类是一种抽象的数据类型,是对某一类事物整体描述/定义,但是并不能代表某一个具体的事物
对象是抽象概念的具体实例
一个程序只需要一个main方法
//学生类
public class Student {
//属性 :字段
String name;
int age;
//方法
public void study(){
System.out.println(this.name+"在学习");
}
}
this.name只想自己的类
创建和初始化对象
- 使用new关键字创建对象
在使用new关键字创建时,除了分配内存空间,还会给创建好的对象,进行默认的初始化 以及对类中的构造器的调用 - 类中的构造器也称为构造方法,是在进行创建对象的时候必须调用的。并且构造器有以下两个特点:
(1) 必须和类的名字相同
(2) 必须没有返回类型,也不能写void
package com.oop.demo02;
//java文件---》class
public class Person {
//一个类即使什么都没写,他也会存在一个方法
String name;
//实例化初始值
//1. 使用new关键是必须要有构造器,本质是在调用构造器
//2.用来初始化值
public Person(){
this.name="kongminghui";
}
//有参构造:一旦定义了有参构造,无参就必须显示定义
public Person(String name){
this.name=name;
}
}
/*
public static void main(String[] args) {
//实例化了一个对象
Person person = new Person();
System.out.println(person.name); //null
}
*/
//alt + inster 生成构造器
/*
构造器
1. 和类名相同
2. 没有返回值
作用:
1. new本质就是调用构造方法
2. 初始化对象的值
注意:
1. 定义构造之后,如果想使用无参构造,显示定义一个无参的构造
*/
内存结构简单分析

//一个项目应该只有一个main方法
public class Applicatiion {
public static void main(String[] args) {
Pet dog = new Pet();
dog.name="旺财";
dog.age=3;
dog.shout();
System.out.println(dog.name);
System.out.println(dog.age);
Pet cat = new Pet();
}
}
public class Pet {
public String name;
public int age;
//无参构造
public void shout(){
System.out.println("叫了");
}
}
类和对象
/*
1. 类与对象
类是一个模板:抽象,对象是一个具体的实例
2. 方法:
定义,调用
3. 对象的引用
引用类型: !基本类型(8)
对象是通过引用来操作的:栈---->堆
4. 属性 字段Field 成员变量
默认初始化:
数字:0 0.0
char:u0000
boolean:false
引用:null
修饰符 属性类型 属性名 = 属性值
5. 对象的创建和使用
必须使用new关键字创造对象,构造器 Person kmh = new Person
对象的属性 kmh.name
对象的方法 kmh.sleep()
6. 类:
静态的属性 属性
动态的行为 方法
*/
浙公网安备 33010602011771号